移动对话框时禁用关闭按钮

时间:2013-08-05 08:47:24

标签: button mfc dialog isenabled

所以我想在某些进程运行时禁用MFC对话框的[X]关闭按钮。我是这样做的:

void CSomeDlg::EnableCloseButton(BOOL bEnable)
{
    UINT menuf = bEnable ? (MF_BYCOMMAND) : (MF_BYCOMMAND | MF_GRAYED | MF_DISABLED);

    CMenu* pSM = GetSystemMenu(FALSE);
    if(pSM)
        pSM->EnableMenuItem(SC_CLOSE, menuf);
}

void CSomeDlg::OnBtnClick_Cancel()
{
    if (!isSomeProcess)     
        CDialogEx::OnCancel();

}

void CSomeDlg::main()
{
    StartSomeProcess();
    isSomeProcess = true;
    EnableCloseButton(FALSE);

    //...

    EndSomeProcess();
    isSomeProcess = false;
    EnableCloseButton(TRUE);
}   

这很有效。某些进程正在运行时,关闭按钮会禁用。但是如果我通过鼠标拖动它来移动对话框,则出于某种原因启用关闭按钮。当我点击它时,应用程序会抛出崩溃错误,但它仍然有效。如果我不按错误对话框中的“关闭应用程序”按钮,应用程序将正确完成工作,错误对话框将消失。

为什么关闭按钮启用?怎么预防呢?

0 个答案:

没有答案