C++ 在MFC中更新用户对话框
我想在单击按钮时更新用户界面。但是,我没有在CProjectDlg中使用直接方法。我在班上有一个CMain来处理这个手术 这是我的密码: ProjectDlg.cppC++ 在MFC中更新用户对话框,c++,mfc,C++,Mfc,我想在单击按钮时更新用户界面。但是,我没有在CProjectDlg中使用直接方法。我在班上有一个CMain来处理这个手术 这是我的密码: ProjectDlg.cpp void CProjectDlg::OnBnClickedButton1() { CMain *ptr = new CMain(); ptr->Click(); CString test = m_edit1; } Main.cpp void CMain::Click() { CProjec
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
地址传递给Click()
函数。我该怎么做
谢谢。每次单击都会创建一个新对话框 CProjecttDlg*ptr=新的CProjectDlg()
您必须做的是只创建一次(可能是在CMain constructor?或第一次访问click时)。要存储其值,只需将ptr设置为CMain的成员(在.h中定义,等等),而不是局部变量。您遇到了一个问题。您正在从CProjectDlg实例调用CMain::Click,但在CMain::Click中创建一个新的CProjectDlg实例,并在该新对话框中设置编辑框,而不是在原始对话框中 我不知道您到底想做什么,但有一件事可以做到,那就是将指向对话框的指针传递给CMain构造函数,然后在CMain::中单击“使用它”以设置编辑框。大概是这样的:
//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实例
最后,我提供的可能解决方案可能有效,但也可能不“正确”。如果没有更多关于你想做什么的细节,我也帮不了你多少