- 2021-6-17
- Visual C++
クリップボード へ テキスト設定
VCでテキストをクリップボードへコピーする。
必要に迫られて作成したので、記載。
(MSのサンプルほぼそのまんまなんだけど。)
こんなにバチっとサンプルあったら、考えなくなるよなぁ。。
ソース
こんな画面を作成し、ボタンを押したらコピーされます。
ソース
//********************************** //実行結果には、責任取りません。 //使用時は自己責任でお願いします。 //********************************** // ボタンクリックイベント void CClipboardTextDlg::OnBnClickedButton1() { CString sText; // クリップボードへコピーするテキスト sText = _T("クリップボードへコピー"); // クリップボードオープン if ( OpenClipboard() == FALSE ) { MessageBox( _T("失敗。他のアプリケーションが開いてる"), _T("失敗"), MB_ICONWARNING ); return; } // クリップボードクリアと所有権の割り当て if ( EmptyClipboard() == FALSE ) { MessageBox( _T("なんか失敗"), _T("失敗"), MB_ICONWARNING ); return; } // サイズ取得 size_t cbStr = ( sText.GetLength() + 1) * sizeof( TCHAR ); // ヒープ割り当て HGLOBAL hData = GlobalAlloc( GMEM_MOVEABLE, cbStr ); // 割り当てたメモリのロックとテキストのコピー memcpy_s( GlobalLock(hData), cbStr, sText.LockBuffer(), cbStr ); GlobalUnlock( hData ); sText.UnlockBuffer(); // 文字セットがユニコードなら CF_UNICODETEXT // 文字セットがマルチバイトなら CF_TEXT UINT uiFormat = (sizeof(TCHAR) == sizeof(WCHAR)) ? CF_UNICODETEXT : CF_TEXT; // クリップボードへ設定 if ( ::SetClipboardData(uiFormat, hData) == NULL ) { MessageBox( _T("クリップボードへ設定失敗"), _T("失敗"), MB_ICONWARNING); CloseClipboard(); return; } CloseClipboard(); MessageBox( _T("クリップボードへテキストを設定しました。"), _T("成功"), MB_ICONINFORMATION ); }
成功のメッセージでたら、CTRL + V で貼り付けられます。