Win32API質問箱 Build38
■ このスレッドは過去ログ倉庫に格納されています
0090デフォルトの名無しさん
2005/12/09(金) 17:29:32例えば現在4個のクリッポボードビュアA,B,C,Dが起動してるとします。
そしてそれぞれのビュアの順位はAを最上として
A B C Dとします。
例えばBがChangeClipboard()を実行しますと、AにはWM_CHANGECBCHAINが送られてきますよね。
WPARAMにはBのhWndが、LPARAMにはCのhWndが格納されているはずですので、
Aは自分の次のビュアのウィンドウハンドルを確認し、もしWPARAMと等しければAの次のビュアのハンドルを、
LPARAMのハンドルに入れ替えればいいと思います。
しかしBではなくCがChangeClipboard()を実行した場合どうしますか?もし上の手順をしてしまったら、
Aの次のビュアはDとなってしまい、Bの存在がまずい事になります・・・
かといってこのメッセージを無視し、実行するとBの次のウィンドウはCだが・・・Cのハンドルは無効
という事態になると思います。
長くなりましたが、上のような場合はSendMessageでBにWM_CHANGECBCHAINを送れば回避されます。※1
しかし、例えばA B C D E Fとチェインがあった場合、DがChangeClipboard()を実行し、Aが※1を実行するとなると
Cのハンドルを知る必要があるのです。ですが、WM_CHANGECBCHAINのパラメータにはDとEしかありません。
どうすればよろしいでしょうか・・
■ このスレッドは過去ログ倉庫に格納されています