プログラミングのメモ帳(C/C++/HSP)

日々のプログラミングで気づいた点や小技集を紹介します。(Windows 10/XP/Vista、VC2017、HSP)

クリップボードにテキストデータを設定

2007年09月12日 12時39分23秒 | クリップボード関連

クリップボードにデータを設定するには SetClipboardData 関数を使います。(戻る)

  1. グローバル・メモリを確保(GlobalAlloc)
  2. グローバル・メモリをロック(GlobalLock)
  3. グローバル・メモリにコピー(lpBuff)
  4. グローバル・メモリをアンロック(GlobalUnlock)
  5. クリップボードを開く(OpenClipboard)
  6. クリップボードをクリア(EmptyClipboard)
  7. クリップボードにデータを設定(SetClipboardData)
  8. クリップボードを閉じる(CloseClipboard)

クリップボードを[開く]~[閉じる]は、なるべく短時間で行うこと。

プロトタイプ宣言

BOOL OpenClipboard(
    HWND    hWndNewOwner    // ウインドウのハンドル
);

HANDLE SetClipboardData(
    UINT    uFormat,        // クリップボードのデータ形式
    HANDLE  hMem            // データのハンドル
);

BOOL EmptyClipboard( VOID );

BOOL CloseClipboard( VOID );

サンプル

HGLOBAL     hMem;       // 設定用のメモリ変数
LPTSTR      lpBuff;     // 複写用のポインタ
LPTSTR      lpText;     // 複写元の文字列
DWORD       dwSize;     // 複写元の長さ

// クリップボードのデータ内容
lpText = TEXT("テキストデータの内容です\r\n");
dwSize = ((lstrlen(lpText) + 1) * sizeof(TCHAR));   // '\0' 文字分を加算

// クリップボードにデータを設定
if ( (hMem = GlobalAlloc((GHND|GMEM_SHARE),dwSize)) != NULL ){
    if ( (lpBuff = (LPTSTR)GlobalLock(hMem)) != NULL ){
        lstrcpy( lpBuff, lpText );                  // lpBuff にコピー
        GlobalUnlock( hMem );
        
        if ( OpenClipboard(hWnd) ){
            EmptyClipboard();
            SetClipboardData( CF_TEXT, hMem );      // データを設定
            CloseClipboard();
            return;
        }
    }
    GlobalFree( hMem );                             // クリップボードが開けないとき解放
}
  • hWnd にウインドウのハンドルを指定します。
  • hWndNULL を指定することも出来ます。

関連記事



コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« クリップボードのテキストデ... | トップ | 警告音を鳴らす »
最新の画像もっと見る

コメントを投稿

クリップボード関連」カテゴリの最新記事