单击CEdit和CSpinButton会导致在MFC对话框中丢失捕获

时间:2016-03-18 10:42:16

标签: c++ windows mfc

我有一个用于挑选颜色的对话框。它由一个代表颜色的按钮和一个带有伙伴旋转按钮的编辑控件组成。 当我创建对话框时,我调用SetCapture()以获得点击,只要它们在对话框外,它就应该关闭。

一切正常,直到我点击编辑控件或它的好友。之后不会调用CMyDialog::OnLButtonDown(),因为我认为捕获丢失了。

我尝试在SetCapture()消息处理程序中调用ON_EN_CHANGE,但它无法解决问题。

我的问题是: 当我点击编辑控件或它的旋转按钮时,我应该在哪里调用SetCapture()以关闭对话框?

1 个答案:

答案 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;
}