GetDlgItem(IDC_STATIC)->SetFont(&m_font) 引发异常



我想更改MFC对话框中静态文本的字体,它引发异常。

我有申报:

CFont m_font;

在initdialog中:

m_font.create(....);
GetDlgItem(IDC_STATIC)->SetFont(&m_font);

并且CDialog::InitDialog();抛出异常。

CWnd::GetDlgItem返回值的文档包含以下内容:

指向给定控件或子窗口的指针如果不存在具有nID参数给定的整数ID的控件,则值为NULL

取消引用NULL指针会导致访问冲突异常,这可能就是您所观察到的。确保您的对话框实际上包含一个ID为IDC_STATIC的控件。

注意,IDC_STATIC是具有值-1的预定义常数。它的主要目的是在您从未打算通过ID访问控件时(静态控件是主要用例(,使您不必发明ID。如果您需要通过ID访问控件,您应该为其分配一个唯一的ID,您可能已经这样做了。如果您从对话框模板构造控件,您将在定义对话框资源的.rc文件中找到ID。

最新更新