-PR-
解決
済み

グローバルメモリについて

  • 困ってます
  • 質問No.83170
  • 閲覧数576
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 61% (37/60)

SetClipboardData関数を使いたいのですが,「データが入っているグローバルメモリのハンドルを指定します。」というヘルプ内の文章の意味がわかりません。
クリップボードに文字列をコピーしたいのですが,どうすればよろしいでしょうか?
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル12

ベストアンサー率 75% (398/526)

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

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

だいぶ昔にやった記憶しかないので、うまくいくか分かりませんが。
お礼コメント
tomo5

お礼率 61% (37/60)

迅速な解答ありがとうございます。
メモリのロックということがまだ理解できていませんが,
調べつつやってみます。
ありがとうございました。
投稿日時 - 2001-05-30 14:41:59
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2
レベル14

ベストアンサー率 50% (1122/2211)

簡単に流れを書くと、こんな感じ。   LPCSTR pszSrc; /* これがクリップボードに複写する文字列を指す */   LPCSTR pszDest;   HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, lstrlen(pszSrc) + 1);   pszDest = GlobalLock(hGlobal); ...続きを読む
簡単に流れを書くと、こんな感じ。

  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() しちゃ
駄目ですよ。


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ