当用户单击窗口 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;
};
PS:我使用纯winapi和oop c++,以及我自己的windows和消息处理包装器。
编辑:根据要求添加了更多代码。
LRESULT WindowC::lButton ( UINT message, WPARAM wParam, LPARAM lParam )
{
doStuff ( );
::PostMessage ( hParent, WM_COMMAND, WPARAM ( BN_CLICKED ), LPARAM ( hwnd ) );
return 0;
};