ユニコードでクリップボードにテキストを取り込む

解決


ym  2007-11-22 16:01:37  No: 66938

VISTA  .NET2005  です。

ユニコードライブラリを使う環境で、文字列をクリップボードに取り込もうとしました。
くぐって、下記コードを見つけて、コーディングしたのですが、最初の1文字しか取り込めません。
(GlobalAllocの第2引数は、余裕を持たそうと思って、ハードコーディングに変えました)

HGLOBAL hMem = ::GlobalAlloc(GMEM_FIXED, 100);
LPTSTR pMem = (LPTSTR)hMem;
::lstrcpy(pMem, (LPCTSTR)strText);

// クリップボードへ文字列をコピーし、クローズ
::EmptyClipboard();  // クリップボードの中身を空にする
::SetClipboardData(CF_TEXT, hMem);
::CloseClipboard();

*strTextは取り込みたいCString型の文字列

他のサイトのコードも試してみたのですが、やはり1文字しか取り込めません。
悩んだ末、ユニコードに合わないのではないかと思いました。
しかし、どうしたらいいのか分かりません。

アドバイスをお願いします。


tetrapod  2007-11-22 17:25:08  No: 66939

CF_UNICODETEXT だよん


夏みかん  2007-11-23 01:44:04  No: 66940

> クリップボード転送には、通常 GHND と GMEM_SHARE を指定します
次のサイトで書いてあった。GMEM_FIXED じゃあ駄目みたいだよ。
http://wisdom.sakura.ne.jp/system/winapi/win32/win90.html

それから一番下の表に CF_UNICODETEXT があるから。読むべし。


ym  2007-11-23 13:59:55  No: 66941

tetrapodさん、夏みかんさん、ありがとうございます。

解決しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加