我有一个用于挑选颜色的对话框。它由一个代表颜色的按钮和一个带有伙伴旋转按钮的编辑控件组成。
当我创建对话框时,我调用SetCapture()
以获得点击,只要它们在对话框外,它就应该关闭。
一切正常,直到我点击编辑控件或它的好友。之后不会调用CMyDialog::OnLButtonDown()
,因为我认为捕获丢失了。
我尝试在SetCapture()
消息处理程序中调用ON_EN_CHANGE
,但它无法解决问题。
我的问题是:
当我点击编辑控件或它的旋转按钮时,我应该在哪里调用SetCapture()
以关闭对话框?
答案 0 :(得分:0)
我采取的方法根本不对。原来应该处理ON_WM_NCACTIVATE消息,如果
,应该关闭对话框CDialog::OnNcActivate( bActive ) returns false.
the function looks like this :
BOOL CMyDialog::OnNcActivate( BOOL bActive )
{
BOOL bResult = CDialog::OnNcActivate( bActive );
if( !bActive )
{
PostMessage( WM_CLOSE );
}
return bResult;
}