プロが教えるわが家の防犯対策術!

SetClipboardData関数を使いたいのですが,「データが入っているグローバルメモリのハンドルを指定します。」というヘルプ内の文章の意味がわかりません。
クリップボードに文字列をコピーしたいのですが,どうすればよろしいでしょうか?

A 回答 (2件)

単にGlobalAlloc(グローバルメモリを確保する関数)が返すメモリハンドルを指定すればよいのでは?



手順としては
1.GlobalAllocでメモリを確保
2.メモリをロックし、文字列を移す
3.メモリをアンロックする
4.SetClipboardDataにメモリハンドルを渡す
のようになると思います。

だいぶ昔にやった記憶しかないので、うまくいくか分かりませんが。
    • good
    • 0
この回答へのお礼

迅速な解答ありがとうございます。
メモリのロックということがまだ理解できていませんが,
調べつつやってみます。
ありがとうございました。

お礼日時:2001/05/30 14:41

簡単に流れを書くと、こんな感じ。



  LPCSTR pszSrc; /* これがクリップボードに複写する文字列を指す */
  LPCSTR pszDest;
  HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, lstrlen(pszSrc) + 1);
  pszDest = GlobalLock(hGlobal);
  lstrcpy(pszDest, pszSrc);
  GlobalUnlock(hGlobal);

  OpenClipboard();
  EmptyClipboard();

  SetClipboardData(CF_TEXT, hGlobal);

  CloseClipboard();

エラーチェックなんかを全然やってないので、適宜追加してね。

あと、hGlobal が指すグローバルメモリは SetClipboardData() が成功した
後は、システムが管理することになるので、勝手に GlobalFree() しちゃ
駄目ですよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!