我在对话框中创建了一个复选框,并尝试访问其条件是否已选中。这是我的代码:
CButton *m_ctlCheckBlack = (CButton *)GetDlgItem(IDC_BLACK);
int chkBoxBlack = m_ctlCheckBlack->GetCheck();
当我浏览此代码时,会弹出一个异常说:
Exception thrown at 0x0FA45564 (mfc140d.dll) in braille_obr.exe: 0xC0000005:
Access violation reading location 0x00000020.
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
使用GetDlgItem的理由很少。在资源编辑器中,右键单击按钮并添加“添加变量”。 它将默认为控件。给它起个名字。您将在对话框类中获得一个成员:
myButtonName.GetChecked( );
现在应该是安全的:
{{1}}
因为它将被创建并正确地进行子类化。
答案 1 :(得分:0)
也许,我怀疑当Button尚未构建时它试图获得按钮的状态。
int chkBoxBlack = m_ctlCheckBlack != NULL ? m_ctlCheckBlack->GetCheck() : 0;
或者,您是否尝试从外部对话操作? 如果是这样,你最好尝试这样做。
■CButton *m_ctlCheckBlack = (CButton *)yourdlg.GetDlgItem(IDC_BLACK);
■FindWindowEx(yourdlg.GetSafeHwnd(), NULL, NULL, "(your button caption)");