パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。時々更新!

ActiveX コントロールでのマウスキャプチャ

InternetExplorer などの ActiveX コンテナの中で、ActiveX コントロール自体が個別の Window を持たずに埋め込まれている場合に、マウスをキャプチャ(SetCapture()) するにはどうすればいいか。MFC だと、MSDN のドキュメントに書かれているのだが、ATL でやるやり方が無い。かなり色々ググったが、見つけることができず。で、
MFC のソースを参照して、後は類推でやってみたらうまくいった。Window がある場合と無い場合で処理を分けないといけなさそうだが、
Window がある場合は ATL::CWindow::SetCapture()
Windowless の場合は、m_spInPlaceSite->SetCapture(BOOL)
を使えばいいようだ。Windowless の場合は、この辺りの処理をコンテナに任せる感じ。