開発環境WindowsXP VisualStudio2008 SDK使用
こんにわ。
猫でも出来るウィンドウズを参考にクリップボードから文字列を取り出すコードを
書いています。
クリップボードにコピーされた文字を取り出したいのですが、文字化けをしてしまいま
す。
文字コードの取り扱いが悪いのか、クリップボードの取り出し方が悪いのか分からないの
で質問させてください。
コードは以下のコードです。
int ReadClipBoard(HWND hWnd)
{
HANDLE hClipData;
DWORD dwSize;
LPTSTR lpClipText;
if(!IsClipboardFormatAvailable(CF_TEXT))
{
OutputDebugString(_T(クリップボードが読めません));
return FALSE;
}
OpenClipboard(hWnd);
hClipData=GetClipboardData(CF_TEXT);
if(hClipData == NULL)
{
CloseClipboard();
return FALSE;
}
lpClipText=(LPTSTR)GlobalLock(hClipData);
//テキスト出力
OutputDebugString(lpClipText);
MessageBox(hWnd,lpClipText,_T(クリップボード確認),MB_OK);
//データ量調査
dwSize=lstrlen(lpClipText) * sizeof(TCHAR);
GlobalUnlock(hClipData);
CloseClipboard();
return TRUE;
}
何となくクリップボードから何か取得出来ていますが、文字化けして読めません。
コンパイルオプションがUnicodeになってませんか?
LPTSTRの型はオプションによって異なります。
非常に有意義な過去ログも参考にしてください。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200807/08070011.txt
仲澤@失業者さんありがとうございます。
hClipData=GetClipboardData(CF_TEXT);
↓
hClipData=GetClipboardData(CF_UNICODETEXT);
とする事で解決しました。
過去ログにばっちり乗ってました。
解決済みをチェックしました。