[英]Update user dialog in MFC
我想在單擊按鈕時更新用戶界面。 但是,我沒有在CProjectDlg中使用直接方法。 我有一個CMain類,它將處理該操作。
這是我的代碼:
ProjectDlg.cpp
void CProjectDlg::OnBnClickedButton1()
{
CMain *ptr = new CMain();
ptr->Click();
CString test = m_edit1;
}
Main.cpp
void CMain::Click()
{
CProjecttDlg *ptr = new CProjectDlg();
ptr->m_edit1.SetString(L"This is a test.");
}
在調試模式下,我發現m_edit1
的地址不相同。 因此該功能是無用的。
我需要將m_edit1
的相同地址m_edit1
給Click()
函數。 我怎么做?
謝謝。
每次單擊時,都會創建一個新對話框。
CProjecttDlg * ptr =新的CProjectDlg();
您必須做的是僅創建一次(可能是在CMain構造函數中?還是第一次訪問該點擊)。 要存儲其值,只需使ptr成為CMain的成員(在.h中定義,依此類推),而不是局部變量即可。
你那里有問題。 您正在調用CMain :: Click到一個CProjectDlg實例,但是在CMain :: Click中創建了一個新的CProjectDlg實例,並在該新對話框中設置了編輯框,而不是在原始對話框中。
我不知道您到底想做什么,但是可行的一件事是將指向對話框的指針傳遞給CMain構造函數,然后在CMain :: Click中使用它來設置編輯框。 像這樣:
//CMain.h
class CMain
{
public:
CMain(CProjectDlg*);
Click();
protected:
CProjecDlg* m_Dlg;
}
// CMain.cpp
CMain::CMain(CProjectDlg* dlg)
{
m_Dlg = dlg;
}
CMain::Click()
{
m_Dlg->m_edit1.SetString(L"This is a test.");
}
除此之外,我不知道是否每次用戶單擊底部時都需要創建一個新的CMain實例。
最后,我提供的可能的解決方案可能會起作用,但也可能不是“正確的”。 但是,如果沒有更多關於您要做什么的詳細信息,我將為您提供更多幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.