SetCapture怎么用啊?得不到我想要的效果
问题,可以收到窗口外的消息,但本窗口的控件无法操作。
过程:
对话框工程A,在其头文件中声明对话框B的变量b_dlg,在CA::OnInitDialog中调用 b_dlg.Create(xxx),在需要的时候,会让B显示:
b_dlg.ShowWindow( SW_SHOW );
然后再在B.h中声明对话框C的变量c_dlg,然后在CB:OnInitDialog中调用 c_dlg.Create(xxx)。
到此框架结束。下面是SetCapture的用法:
在B中有一个按钮BBtn,在其Click事件中显示C:
c_dlg.ShowWindow( SW_SHOW );
c_dlg.SetCapture();
在C中,效果达到了一半,即当点击C之外的地方时,我在C的WM_LBUTTONUP消息中释放并隐藏C窗口,这是正确的:
void CC::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
POINT pt;
CRect rect;
GetWindowRect( &rect );
GetCursorPos( &pt );
if ( rect.PtInRect( pt ) == FALSE )
{
ReleaseCapture();
ShowWindow( SW_HIDE );
}
CDialog::OnLButtonUp(nFlags, point);
}
但是,C中的其它任何控件都无法操作,比如上边有几个文本框我却无法输入,有ok和cancel按钮但我无法点击。在Ok和cancel的click事件中下断点,但根本就执行不到里边,怎么办?我直接按回车就能跑到Ok的click中