クリップボードへのテキストデータ入出力
テキスト・データのクリップボードへの格納とクリップボードからの取得する方法を示します。
【サンプル】
//クリップボードへテキスト・データを格納
void CClipBdTextDlg::OnButton1()
{
CString strBuf;
char *str, *str2;
HGLOBAL hMem;
//エディット・ボックスからテキストを取得
m_ed1.GetWindowText(strBuf);
str = new char[strBuf.GetLength() + 1];
strcpy(str, strBuf);
//グローバル領域をメモリに確保
hMem = GlobalAlloc(GMEM_MOVEABLE, strlen(str)+1);
//グローバル領域(hMem)にデータを格納
str2 = (char*)GlobalLock(hMem);
strcpy(str2, str);
GlobalUnlock(hMem);
//クリップボードを開く
if (OpenClipboard()){
//クリップボードを空にする
//(必ず必要な処置ではない)
EmptyClipboard();
//クリップボードへテキストを格納
HANDLE hData = SetClipboardData(CF_TEXT, hMem);
//クリップボードを閉じる
CloseClipboard();
}
}
//クリップボードからテキスト・データを取得
void CClipBdTextDlg::OnButton2()
{
char *str, *str2;
//クリップボードを開く
if(OpenClipboard()){
//クリップボードが保持しているグローバル領域のハンドルを取得
HANDLE hData = GetClipboardData(CF_TEXT);
//グローバル領域に格納されているデータを取得
str = (char*)GlobalLock(hData);
if (str) {
str2 = new char[strlen(str) + 1];
strcpy(str2, str);
GlobalUnlock(hData);
}
//クリップボードを閉じる
CloseClipboard();
}
m_ed2.SetWindowText(str2);
}