繁体   English   中英

如何在MFC中访问主对话框的元素? 在视觉编辑器VS 2012中创建了Element

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

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

我现在想访问它,所以我已经在MainFrm.cpp中写了一些地方(代码在单击按钮之一后执行,因此在构建所有东西之后):

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

在执行第二行代码时,出现错误:

Debug Assertion Failed!
Program: C:\Windows\system32\mfc110ud.dll
File: f:\\dd\vctools\vc7libs\ship\atlmfc\src\mfc\winocc.cpp
Line: 245

我做错了什么?

CStatic是通过可视编辑器创建的,而不是通过代码创建的。 Ofc我在应用程序上看到它。

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

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

您还应该注意,GetDlgItem可能会不安全使用,因为它会返回一个临时指针。 该指针仅对正在执行的代码(方法)的范围有效。 您应该遵循ScottMcP的建议。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM