クリップボードに貼り付ける方法

[CPP]

■クリップボード
以下のコードで、クリップボードへテキストをコピーします。

●ワイド文字の場合
一旦、WideCharToMultiByte関数を使ってマルチバイト文字(OEM)に変換する必要がある。
ワイド文字のままクリップボードにコピーしても、ペースト時に、マルチバイト文字扱いを受けるため、
ワイド文字の2バイト目が0x00だったら、終端文字扱いを受けてしまい、最初の1文字しか表示されない。

// convert wide chars into multi-byte chars
CByteArray baMultiString;
int nWideLength = strText.GetLength() + 1;
int nMultiLength = WideCharToMultiByte(CP_ACP, NULL, strText.GetBuffer(), nWideLength, NULL, NULL, NULL, NULL);
baMultiString.SetSize(nMultiLength);
WideCharToMultiByte(CP_ACP, NULL, strText.GetBuffer(), nWideLength, (char *)baMultiString.GetData(), nMultiLength, NULL, NULL);

// copy into clipboard
OpenClipboard();
EmptyClipboard();
HGLOBAL hGlob = GlobalAlloc(GMEM_FIXED, nMultiLength);
memcpy(hGlob, baMultiString.GetData(), nMultiLength);
::EmptyClipboard();
::SetClipboardData(CF_TEXT, hGlob);
CloseClipboard();


ネタ元