Mesoscopic Programming

タコさんプログラミング専門

コンボボックスで苦労した話

コンボボックスがドロップダウン状態のとき、コンボボックス以外の場所をクリックされたらコンボボックスを閉じたい(破棄したい)と思うじゃない。

エディットコントロールなんかは親ウィンドウにマウスメッセージが届くので問題ないのだが、コンボはマウスをキャプチャしてるので同じことをやるのにすげぇ苦労した。

しかもキャプチャしてるハンドルはコンボ自身ではなく、なおかつコンボの親でも子でもない別ハンドルだったのだ。

それはドロップダウンリストのハンドルだった。

こいつはコンボ自身と親子関係にないらしいのだが、CB_GETCOMBOBOXINFOメッセージで調べると出てくるハンドルだった。

そこでドロップダウンリストあてのクリックメッセージをフックして親ウィンドウにもクリックメッセージが届くようにしたらうまくいった。

でもこのときマウス座標がコンボとドロップダウンのどちらかに含まれてるかちゃんと調べてからでないと不具合が起こるので要注意。