如何禁用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;
}

它禁用按钮就好了。也许还有其他问题吗?

09-26 12:26