C++ MFC 自定义函数中 给IDC_EDIT1 赋值,谢谢

如题所述

在自定义函数中给对话框和form的控件赋值,必须首先得到对话框等窗口的指针。因此必须明确两者之间的关系,不能是纯粹的无关系,这样在MFC体系中是不合乎体系逻辑的。
推荐办法:
在对话框类做自定义函数(即:函数是类成员函数),这样在自定义函数中,就可以:
GetDlgItem(IDC_EDIT1)->SetWindowText(_T("XXX"));
这样赋值了。追问

具体怎么做呢?我刚学,有点不太懂,如果这样做,在其它地方调用这个函数会不会有问题?

追答

对话框控件的赋值,最好在内部完成,不要在外部(也就是不要在外部调用这个函数),尤其是模态对话框。
对话框类,右键,Add Function即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-08
方法一:绑定控件
方法二:绑定控件变量
VC6.0按快捷键Ctrl+W,更高版本Ctrl+shift+X打开类向导。
如果绑定了控件m_wndEdit,直接用m_wndEdit.SetWindowText()即可。
如果绑定了控件变量m_strEdit,在变量赋值上下文添加updateData()即可。追问

m_wndEdit,m_strEdit是自己填上去的吗?是不是任何名字都可以的?

追答

是的,这个只是变量名而已。

第2个回答  2014-04-07
可以给edit控件关联一个cstring变量,并且update(true或false),如果是取控件value用true,显示用false,大概是这样,记的不是很清楚追问

能写下简单代码吗?

追答

注意之前回答有错

CEdit a;
DoDataExchange函数增加DDX_Control(pDX, IDC_EDIT1, a );
上面是可以直接在类向导中对应类的成员变量中完成

在需要赋值的位置:
a.SetWindowText(cstring);
UpdateData(FALSE);

追问

在自定的函数体中也可以用吗?

UpdateData(FALSE);
有2065错'这个应放在那儿?

追答

放在赋值之后希望显示在控件中时

追问

但有2065号错误,这是为什么呢?

追答

清理项目,然后rebuild all
试试

第3个回答  2014-04-08
先关联变量,直接给关联变量赋值就可以。本回答被提问者采纳
相似回答