怎么把string型赋值给mfc中的一个edit box

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么把string型赋值给mfc中的一个edit box相关的知识,希望对你有一定的参考价值。

参考技术A 可以利用classwizard给这个EditBox绑定一个CString类型的成员变量.然后利用对话框数据交换函数UpdateData()对值设置或更新.

如果在SDK环境下,则可以利用SetWindowText( hEdit,TEXT("ABC") )和 TCHAR szBuf[256],GetWindowText( hEdit, szBuf, 256 ); 设置和获取EditBox的string型值.
参考技术B 假设
string变量名为str
editbox的ID为IDC_EDIT1

可以用 GetDlgItem(IDC_EDIT1)->SetWindowText(str)实现赋值本回答被提问者采纳
参考技术C 如果通过对话框(dialog) 输入, 应当在它的dialog类(class) DoDataExchange 等地方定义。

mfc中用 CString class 或 char 型, 这两者都可用于存放string, CString 类 赋值 要用CString class 的成员函数,char型 要用 strcpy(), sprintf() 等函数,CString 与 char 型 交换有时不复杂,有时复杂(有时涉及指针,有时不涉及,有时混合)。

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

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

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

追答

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

参考技术A 方法一:绑定控件
方法二:绑定控件变量
VC6.0按快捷键Ctrl+W,更高版本Ctrl+shift+X打开类向导。
如果绑定了控件m_wndEdit,直接用m_wndEdit.SetWindowText()即可。
如果绑定了控件变量m_strEdit,在变量赋值上下文添加updateData()即可。追问

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

追答

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

参考技术B 可以给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
试试

参考技术C 先关联变量,直接给关联变量赋值就可以。本回答被提问者采纳

以上是关于怎么把string型赋值给mfc中的一个edit box的主要内容,如果未能解决你的问题,请参考以下文章

mfc CFile 读取内容到char数组的问题?

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

如何将int型数值赋值给char型数组

MFC Edit Control控件里面怎么样输入小数

C++ string 转化为LPCTSTR

C++问题,怎么把char数组以ASCII码赋值给CString