Clipboard.クリップボード
クリップボードに文字列をセット
char str[] = "test";
//(A)クリップデータへ格納するデータは共有メモリに格納する必要があります。
// 必要なだけの共有メモリを獲得してそこにデータをコピーします
int len = strlen(str)+1;
HGLOBAL hData = (HGLOBAL)::GlobalAlloc(GHND, (DWORD)len);
char *pData = (char *)GlobalLock( hData );
strcpy(pData, str);
GlobalUnlock(hData);
//今クリップボードに入っているデータを廃棄します。
//(D)クリップボードへグローバルメモリを登録する
if (::SetClipboardData(CF_TEXT, hData) == NULL) {
// 登録失敗の場合は、自分で共有メモリを開放する必要があります。
}
// クリップボードをクローズする
クリップボードにあるテキストデータを表示
GetClipboardDataを使用して、クリップボードにあるテキストデータを取得し表示する。
{
OpenClipboard(NULL);
HANDLE hText = GetClipboardData(CF_TEXT);
if(hText == NULL) {
printf("クリップボードにテキストデータはない。\n");
} else {
char *pText = GlobalLock( hText );
printf("%s\n", pText);
GlobalUnlock(hText);
}
CloseClipboard();
}
GlobalLock
DESC
グローバルメモリオブジェクトをロックし
メモリブロックの最初の 1 バイトへのポインタを返します。
SYNTAX
LPVOID GlobalLock(
HGLOBAL hMem // グローバルメモリオブジェクトのハンドル
);
POINT
ロックというのは メモリのアドレスが移動することをロックするらしい。
CloseClipboard
SYNTAX
BOOL CloseClipboard();
RETURN
!0 : 失敗
0 : 成功
GetClipboardData
HANDLE GetClipboardData(
UINT uFormat // クリップボードのデータ形式
);
RETURN
指定したデータ形式のクリップボードオブジェクトのハンドルが返ります。
NULL : 失敗
SetClipboardData
HANDLE SetClipboardData(
UINT uFormat, // クリップボードのデータ形式
HANDLE hMem // データのハンドル
);
FILE_TYPE
http://www.sage-p.com/b/public_vml/dragdrop.html
CF_TYPE
CF_BITMAP
http://blog.goo.ne.jp/masaki_goo_2006/e/c051af6aa9c44b5cd8cd7ac97b1c5057