如何在 MFC 中访问主对话框的元素?元素是在可视化编辑器VS 2012中创建的

How to get access to main dialog's element in MFC? Element was created in visual editor VS 2012

本文关键字:元素 编辑器 可视化 VS 2012 创建 访问 对话框 MFC      更新时间:2023-10-16

我在VS 2012中的可视化资源编辑器中创建了应用程序主窗体上的几个组件(其中一个是CStatictext)。

我现在想访问它,所以我在MainFrm.cpp中的某个地方写了一篇文章(代码在点击其中一个按钮后执行,所以在构建完所有内容之后):

CStatic * temp = (CStatic *) GetDlgItem(IDC_OPERATION_INFO);
temp->SetWindowText(text);

在执行第二行代码时,我得到了错误:

Debug Assertion Failed!
Program: C:Windowssystem32mfc110ud.dll
File: f:\ddvctoolsvc7libsshipatlmfcsrcmfcwinocc.cpp
Line: 245

我做错了什么

CStatic是通过可视化编辑器创建的,而不是在代码中创建的。Ofc我在申请表上看到了。

静态控件可能在CDialog或CFormView派生类上,而不是CMainFrame上。GetDlgItem仅适用于作为调用类的子级的控件。

访问控件的更好方法是在可视化编辑器中右键单击控件,然后选择"添加变量"。它将允许您向正确的父类添加一个CStatic变量(如m_opinfo)。然后该类可以调用m_opinfo.SetWindowText(text).

您还应该注意,GetDlgItem使用起来可能不安全,因为它返回了一个临时指针。指针仅对正在执行的代码(方法)的作用域有效。你应该听从ScottMcP的建议。