当用户点击窗口B时,窗口C变为可见。
情境1 :当窗口C可见且用户点击窗口A或B上的任何位置或窗口A的任何其他子窗口时,窗口C变为不可见。
情境2 :当窗口C可见且用户点击窗口C时,程序会执行一些操作并使窗口C不可见。 [窗口C有更多子窗口]
如何实现此功能?
SetCapture不适用于情境2。
在窗口B中,这是我得到的,它适用于情况1,但显然不适用于情境2.
LRESULT WindowB::LButtonDown ( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{
if ( !capture )
{
::SetCapture ( hwnd );
capture = true;
windowC->show ( );
}
else
{
::ReleaseCapture ( );
capture = false;
windowC->hide ( );
}
return 0;
};
P.S:我正在使用带有oop c ++的纯winapi,以及我自己的windows和消息处理包装器。
编辑:根据要求添加了更多代码。
LRESULT WindowC::lButton ( UINT message, WPARAM wParam, LPARAM lParam )
{
doStuff ( );
::PostMessage ( hParent, WM_COMMAND, WPARAM ( BN_CLICKED ), LPARAM ( hwnd ) );
return 0;
};