如何禁用MFC对话框的“确定”按钮?
这段代码:CWnd* fieldOK = pDlg->GetDlgItem(IDOK);
导致异常“访问冲突读取位置...”
fieldOK->EnableWindow(FALSE);
在ASSERT(::IsWindow(m_hWnd) || (m_pCtrlSite != NULL));
中的CWnd::EnableWindow(BOOL bEnable)
中的功能winnocc.cpp
中的mfc90d.dll
行中
此时,重点放在另一个控件上。
有什么问题吗?
感谢帮助。
[编辑]
bool CSCalcNormCell::OnSelectionChanged( CWnd* pDlg, int type, int page, UINT ctrl_id )
{
DDX_DataBox(pDX.get(), IDC_WORKSHOP_COMBO, ws_code);
if (!CInfactoryPriceAdapter::CanEditPricesForWorkshop( ws_code ))
{
CWnd* fieldOK = pDlg->GetDlgItem(IDOK);
fieldOK->EnableWindow(FALSE);
}
else
{
CWnd* fieldOK = pDlg->GetDlgItem(IDOK);
fieldOK->EnableWindow(TRUE);
}
}
最佳答案
我不知道为什么不能做到这一点。如果我使用常规的CDialog并进行如下初始化:
BOOL CMyDialog::OnInitDialog() {
CDialog::OnInitDialog();
CWnd *okbtn = GetDlgItem( IDOK );
if ( okbtn ) {
okbtn->EnableWindow( FALSE );
}
return TRUE;
}
它禁用按钮就好了。也许还有其他问题吗?