簡體   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