想用MFC下的SetWindowTextW给编辑框输出数值类型的变量,求教

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了想用MFC下的SetWindowTextW给编辑框输出数值类型的变量,求教相关的知识,希望对你有一定的参考价值。

果断要纠结死了,比如说我要输出数字3000,我给编辑框关联了一个Control变量a,要使用a.SetWindowsTextW("3000")使编辑框显示数字;不过这个API函数输出的类型必须是LPCTSTR。我去查了一下,用a.SetWindowsTextW(_T("3000"))就好了。。。
不过我现在我要输出的是一个存储在变量里面的数值,比如说,int b = 3000;这个时候怎样输出呢。有人说用itoa函数转化为char类型,不过char类型也不能用这个API函数输出,如果直接(LPCTSTR)强制转换b或者转化成的char类型,输出的就是乱码,求解。。。或者换个方法?

假设你对话框中的编辑框的ID号是 IDC_EDIT1,可以直接用SetDlgItemInt这个函数,直接输出数据:

int b=3000;
SetDlgItemInt(IDC_EDIT1,b);
可以试试看。追问

在OnInitDialog里面使用::SetDlgItemInt(NULL,IDC_EDIT1,b,NULL);果断木有用

追答

在OnInitDialog中,直接使用CWnd的成员函数CWnd::SetDlgItemInt就好,只有后面三个参数。
不能用::SetDlgItemInt(NULL,IDC_EDIT1,b,NULL);
如果要使用::SetDlgItemInt(NULL,IDC_EDIT1,b,NULL);的话,第一个参数不能是NULL,
应该是对话框的窗口句柄:this->m_hWnd。

参考技术A CString str;
str.Format("%d", b);
a.SetWindowText(str)
如果你用的Unicode的话,可能还需要转换一下
参考技术B CString str;
str.Format("%d",b);
a.SetWindowsText(str);

请教MFC中如何循环处理相同类型的控件,如编辑框之类的?

在下写程序时,由于对话框上使用了很多的编辑框(配合复选框勾选),由于编辑框很多,取值计算时比较麻烦,且计算过程比较简单,想通过循环一次处理掉,但是再下的编辑框的ID号并没有按顺序取,而是按照每个控件内容取的(比如IDC_EDIT_301CC,IDC_EDIT_PCH33等等),请教有可能这些同类控件的循环使用么?好像知道有对应的控件号可以使用,请教如何获得、如何使用,谢谢!

参考技术A 编辑框并不是非得从资源编辑器中才能放到对话框上,也可以动态创建啊:
头文件中声明:
CEdit* m_Edits;

cpp文件的OnInitDialog函数中:
m_Edits=new CEdit(50);

for(int i=0;i<50;i++)

m_Edits[i].Create(……);


程序执行结束时:
for(int i=0;i<50;i++)

delete []m_Edits;


不过这种情况只适合你所有的Edit控件在对话框上的位置都是按规律排列的。如果不是,请用下面的方法:

在头文件中声明足够多元素的CEdit数组:
CEdit m_Edit[50];//假设你事先放好了50个Edit控件

然后找到对话框的DoDataExchange(CDataExchange* pDX)函数,添加如下代码:
DDX_Control(pDX,IDC_XXX, m_Edit[0]);
DDX_Control(pDX,IDC_YYY, m_Edit[1]);
……………………
IDC_XXX和IDC_YYY是各个Edit的ID
像这样手动将所有编辑框添加完就行了,以后就可以用数组的方式访问他们了本回答被提问者采纳
参考技术B 没有办法,只能在Class Wizard关联好了,在初始化后用一个指针数组去标记下来。

类似这样
CEdit m_et1;
CEdit m_et2;
CEdit m_et3;
CEdit m_et4;

CEdit *m_petEdit[4];
参考技术C 把ID记录在数组中.
再GetDlgItem得到控件窗口指针

以上是关于想用MFC下的SetWindowTextW给编辑框输出数值类型的变量,求教的主要内容,如果未能解决你的问题,请参考以下文章

mfc中SetWindowTextW

MFC 静态文本框

MFC中如何给编辑框设置文本内容?

mfc EDIT编辑框即时在for循环中更新

急!MFC中给一个对话框的不同编辑框关联变量后如何获得多个不同变量的值进行计算处理?????

请教MFC中如何循环处理相同类型的控件,如编辑框之类的?