ウィンドウ非表示に時に表示したポップアップメニューを閉じるには?
質問させて頂きます。
現在C++にてWin32SDKを使用し開発を行っております
そこで、メインウィンドウが非表示の時にポップアップメニューを表示するようにしているのですが
非表示の際、ホットキーを起因にポップアップメニューを表示すると
ポップアップメニュー以外をクリックしても消えますが
WM_TIMER等、一定時間経過時に表示した場合
ポップアップメニュー以外をクリックしても消えません
下記が一部コードを抜粋した物です
case WM_CREATE:
hMenu = CreatePopupMenu( );
AppendMenu( hMenu, MF_STRING, 0x01, TEXT("HOGE1") );
AppendMenu( hMenu, MF_STRING, 0x02, TEXT("HOGE2") );
return 0;
case WM_HOTKEY:
GetCursorPos( &pos );
SetForegroundWindow( hWnd );
TrackPopupMenu( hMenu, TPM_LEFTALIGN | TPM_BOTTOMALIGN, pos.x, pos.y, 0, hWnd, NULL );
return 0;
case WM_TIMER:
GetCursorPos( &pos );
SetForegroundWindow( hWnd );
TrackPopupMenu( hMenu, TPM_LEFTALIGN | TPM_BOTTOMALIGN, pos.x, pos.y, 0, hWnd, NULL );
return 0;
ホットキーの設定と、タイマーの設定の処理を付随しておりませんが
ホットキー、タイマーの処理は同じものです
ポップアップメニューを表示の際、WM_INITMENUPOPUPからポップアップメニューをサブクラス化し
WM_KILLFOCUS等のメッセージが来た際に破棄する処理を試しても上手く行きません
この場合、マウスをグローバルフックしなければならないでしょうか?
極力フックは避けて解決したいと思っております。
ご教授の程よろしくお願いします。