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文字しか取り込めません。
悩んだ末、ユニコードに合わないのではないかと思いました。
しかし、どうしたらいいのか分かりません。
アドバイスをお願いします。
CF_UNICODETEXT だよん
> クリップボード転送には、通常 GHND と GMEM_SHARE を指定します
次のサイトで書いてあった。GMEM_FIXED じゃあ駄目みたいだよ。
http://wisdom.sakura.ne.jp/system/winapi/win32/win90.html
それから一番下の表に CF_UNICODETEXT があるから。読むべし。
tetrapodさん、夏みかんさん、ありがとうございます。
解決しました。
ツイート | ![]() |