C++ GetDlgItem(IDC_静态)>;SetFont(&;m_font)引发异常
我想更改MFC对话框中静态文本的字体,它会引发异常 我在声明中:C++ GetDlgItem(IDC_静态)>;SetFont(&;m_font)引发异常,c++,fonts,mfc,C++,Fonts,Mfc,我想更改MFC对话框中静态文本的字体,它会引发异常 我在声明中: cfontm\u字体; 在初始化对话框中: m_font.create(…); GetDlgItem(IDC\u STATIC)->SetFont(&m\u font); 和CDialog::InitDialog()引发异常。的返回值文档包含以下内容: 指向给定控件或子窗口的指针如果不存在具有nID参数给定的整数ID的控件,则该值为NULL 取消对NULL指针的引用会导致访问冲突异常,这可能是您所观察到的。确保对话框中确实包含
cfontm\u字体;
在初始化对话框中:
m_font.create(…);
GetDlgItem(IDC\u STATIC)->SetFont(&m\u font);
和CDialog::InitDialog()代码>引发异常。的返回值文档包含以下内容:
指向给定控件或子窗口的指针如果不存在具有nID
参数给定的整数ID的控件,则该值为NULL
取消对NULL
指针的引用会导致访问冲突异常,这可能是您所观察到的。确保对话框中确实包含ID为IDC\u STATIC
的控件
请注意,IDC\u STATIC
是一个值为-1
的变量。它的主要目的是,当您从未打算按ID访问控件(静态控件是主要用例)时,不必发明ID。如果您需要通过ID访问控件,则应该为其分配一个唯一的ID,您可能已经这样做了。如果从对话框模板构造控件,您将在定义对话框资源的.rc文件中找到ID。检查GetDlgItem(IDC\u STATIC)
调用的返回值。如果这是一个空指针,那么您的对话框中很可能没有具有该ID的控件。不是静态的。这对于您不需要访问的任何控件都是好的。这是否回答了您的问题?