想用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类型,输出的就是乱码,求解。。。或者换个方法?
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。
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给编辑框输出数值类型的变量,求教的主要内容,如果未能解决你的问题,请参考以下文章