goo blog サービス終了のお知らせ 
goo

OpenClipboardのメモ

OpenClipboard について

ヘルプには、以下のように書かれています。
OpenClipboard パラメータから引用
BOOL OpenClipboard(
    HWND hWndNewOwner // ウィンドウのハンドル
);

hWndNewOwner
クリップボードをいて関連付けたいウィンドウのハンドルを指定します。NULL を指定すると、現在のタスクがクリップボードを開きます。
「クリップボードをいて」は、「クリップボードを開いて」のtypoかな。
OpenClipboard 解説から引用
他のウィンドウが既にクリップボードを開いている場合、OpenClipboard 関数は失敗します。
OpenClipboard の呼び出しに成功するたびに、アプリケーションは CloseClipboard 関数を呼び出すべきです。
EmptyClipboard 関数を呼び出さないと、hWndNewOwner パラメータで指定したウィンドウはクリップボードのオーナーになりません。


失敗するケース

OpenClipboardの引数の違い(Windows XP SP3)
処理1
処理2
結果
OpenClipboard(hWnd1)
-
成功
-
OpenClipboard(hWnd2)
or
OpenClipboard(NULL)
失敗
-
-
-
CloseClipboard()
-
成功

処理1
処理2
結果
OpenClipboard(NULL)
-
成功
-
OpenClipboard(hWnd2)
失敗
-
-
-
CloseClipboard()
-
成功
処理1
処理2
結果
OpenClipboard(NULL)
-
成功
-
OpenClipboard(NULL)
成功
-
CloseClipboard()
成功
CloseClipboard()
-
失敗

表-右下の場合、処理1のOpenClipboard(NULL)が成功しても、処理2のOpenClipboard(NULL)後は処理1のクリップボードの操作が失敗する。
コメント ( 0 ) | Trackback ( 0 )
« インターネッ... XML »
 
コメント
 
コメントはありません。
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。