>>40 class MyStream : public CComObjectRootEx<CComSingleThreadModel>, public CComCoClass<MyStream, &CLSID_MyStream>, public IDispatchImpl<IMyStream, &IID_IMyStream, &LIBID_MyLib>, public IStream {};
ビュアチェインに関してです 例えば現在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しかありません。 どうすればよろしいでしょうか・・
Contains events logged by applications that create a custom log. Using a custom log enables an application to control the size of the log or attach SACLs for security purposes without affecting other applications.