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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC中如何给编辑框设置文本内容?相关的知识,希望对你有一定的参考价值。

点击某按钮,弹出消息框,消息框中显示的内容也是编辑框中的内容。
能否实现设置?

1、打开Visual Studio 2013 依次点击左上角的文件-新建-项目。

2、在弹出的新建项目窗口中依次点击:已安装 - 模板- Visual C++ - MFC,再点击MFC应用程序,并输入项目名(也可直接使用默认名称)在此例中我们取名为MyFirstMFC,最后点击确定按钮。

3、在程序中添加一个编辑框和一个按钮,设置按钮ID为IDC_SetText,Caption为“设置编辑框文本”;设置编辑框ID为IDC_EditBox;调整好窗口的大小。

4、双击“设置编辑框文本”按钮,在按钮的处理程序中添加代码:

GetDlgItem(IDC_EditBox)->SetWindowText(_T("我是编辑框的内容"));

5、生成程序,启动调试,点击按钮就会设置编辑框中的内容。

参考技术A 可以设置,你首先要获取编辑框中的内容,然后在MessageBox中显示。获取编辑框内容可以用Updata()或GetWindowText()获取。函数用法请看MSDN或网上查。追问

我的意思是编辑框原来没有内容,是点击按钮以后弹出的消息框中的内容给编辑框赋值了?

追答

你的弹出的消息框的内容从哪得到的??

追问

自己设置一个MessageBox("hello,world!");什么的

追答

那你要把这个"hello,world!"记录下来,然后获取编辑框指针CEdit* pEdit;然后调用pEdit->SetWindowText("hello,world!");

本回答被提问者采纳
参考技术B 主要依赖SetWindowText函数。

首先给编辑框关联一个CEdit类型的变量。(右键编辑框,添加变量就可以)
然后调用SetWindowText函数,传入CString类型的参数。

函数原型:
CWnd::SetWindowText

void SetWindowText( LPCTSTR lpszString );

范例(来源于MSDN):
Example
// set the text in IDC_MYEDIT
CWnd* pWnd = GetDlgItem(IDC_MYEDIT);
pWnd->SetWindowText(_T("Hockey is best!"));

// Get the text back. CString is convenient, because MFC
// will automatically allocate enough memory to hold the
// text--no matter how large it is.

CString str;
pWnd->GetWindowText(str);
ASSERT(str == _T("Hockey is best!"));

// The LPTSTR override works, too, but it might be too short.
// If we supply a buffer that's too small, we'll only get those
// characters that fit.

TCHAR sz[10];
int nRet = pWnd->GetWindowText(sz, 10);

// Nine characters, plus terminating null
ASSERT(lstrcmp(sz, _T("Hockey is")) == 0);
ASSERT(nRet == 9);

// You can query the length of the text without the length of
// the string using CWnd::GetWindowTextLength()
nRet = pWnd->GetWindowTextLength();
ASSERT(nRet == 15);

MFC如何从文本框中获取数字

我只是想做一个简单的加法运算软件,三个文本框的ID依次为jia1,jia2,he。
void CMainDlg::OnButton1()

// TODO: Add your control notification handler code here
double j1;
GetDlgItemText(jia1,j1);

当我的代码是这样时,编译报错,神马的逼着我用CString。
然后我:
void CMainDlg::OnButton1()

// TODO: Add your control notification handler code here
CString j1_s;
GetDlgItemText(jia1,j1_s);
double j1;
j1=double(j1_s);

报错:'type cast' : cannot convert from 'class CString' to 'double'
神马的又不让我转double。
这下头大了,难道要我把j1_s输出到数据库,再用j1读进来不成??
请求高手帮忙,把数字从文本框里取出来。求完整代码

为三个editbox分别添加变量,操作是右键单击editbox,classwizard,member variable,左边选中要添加的控件,右边单击add,类型为double,变量名为m_jia1 可以自己换
后面两个同理,假设命名为 m_jia2 , m_he
然后代码换成
if(UpdateData(true))

m_he=m_jia1+m_jia2;

这样m_he就是和了
解释一下吧UpdateData(true) 这条语句的功能是把编辑框的内容输入到绑定的变量中 有返回值,当变量全部合法返回真,否则返回假
也就是执行完这句editbox中的内容已经赋值给各自绑定的变量中了
参考技术A 给这个文本框在向导里关联一个CString类型的变量,如m_str;
m_str中存放的就是该文本框中的内容,但用之前要加一个UpdateData(TRUE);
参考如下:
CString str;
((CEdit *)GetDlgItem(IDC_EDIT1))->GetWindowText(str);//获得
MessageBox(str);//显示
//IDC_EDIT1是编辑框的ID,右击编辑框,选择属性就可以看见了。
参考技术B void CMainDlg::OnButton1()

// TODO: Add your control notification handler code here
CString j1_s;
GetDlgItemText(jia1,j1_s);
double j1;
j1=atof(j1_s);
本回答被提问者采纳
参考技术C CString j1_s;
GetDlgItemText(jia1, j1_s);
double j1 = _ttof((LPCTSTR)j1_s);

CString j2_s;
GetDlgItemTet(jia2, j2_s);
double j2 = _ttof((LPCTSTR)j2_s);

CString result_s;
result_s.Format(_T("%f"), j1+j2);
SetDlgItemText(he, result_s);追问

error C2065: '_ttof' : undeclared identifier
没有这个函数啊。。。

追答

试试_tstof呢?

追问

也不行啊,我用的是VC++6.0,网上说就j1=atof(jia1)可以,我试了下,还真行了。。。辛苦你了哈

以上是关于MFC中如何给编辑框设置文本内容?的主要内容,如果未能解决你的问题,请参考以下文章

mfc中如何设置编辑框\按钮的外观

mfc 动态更新编辑框内容

MFC控件编程之 按钮编辑框.静态文本的使用

MFC的编辑框里不能按时间依次显示递增的数字

如何将自旋控件关联到 MFC 中的不同编辑框

MFC怎样设置编辑框响应键盘啊?我做了个计算器,将编辑框禁止了,又想能用键盘输入,怎么办呀?