MFC总结(9) ---- CEdit 获取文本的7种方法

本文介绍了在MFC中获取CEdit控件文本的七种不同方法,包括GetDlgItemText、GetDlgItemInt、成员变量关联、控件变量关联、消息发送等,涉及了字符串和整型之间的转换,以及对Edit Control的操作。

1. 通过获取指定元素(Edit Control 的Id值 )的句柄,然后通过GetWindowText进行获取,SetWindowText进行添加设置      
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10);
GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);
GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);


2. 通过获取指定本窗口的子元素确定Edit Control,通过SetDlgItemText 和 GetDlgItemText进行操作。
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
GetDlgItemText(IDC_EDIT1,ch1,10);
GetDlgItemText(IDC_EDIT2,ch2,10);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);
SetDlgItemText(IDC_EDIT3,ch3);


3.和2有些类似,但是此时使用的是GetDlgItemInt和SetDlgItemInt进行操作,注意:此时文本内存为int类型,不是字符类型。如果是文本框是是int类型那么用这个比较方便,不用像2中还需要进行转换。
int num1,num2,num3;
num1=GetDlgItemInt(IDC_EDIT1);
num2=GetDlgItemInt(IDC_EDIT2);
num3=num1+num2;
SetDlgItemInt(IDC_EDIT3,num3);


4.//定义成员变量..变量与控 件关连
/**
//{{AFX_DATA(CTestDlg)
enum { IDD = IDD_DIALOG1 };
int   m_num1;
int   m_num2;
int   m_num3;
//}}AFX_DATA
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestDlg)
DDX_Text(pDX, IDC_EDIT1, m_num1); //关联控件
DDV_MinMaxInt(pDX, m_num1, 0, 100);
DDX_Text(pDX, IDC_EDIT2, m_num2);
DDV_MinMaxInt(pDX, m_num2, 0, 100);
DDX_Text(pDX, IDC_EDIT3, m_num3);
//}}AFX_DATA_MAP
}
**/
UpdateData();     //UpdateData 的用法
m_num3=m_num1+m_num2;  
UpdateData(FALSE);   

5.//定义控件变量..变量与控件关连
//{{AFX_DATA(CTestDlg)
enum { IDD = IDD_DIALOG1 };
CEdit m_edit3;
CEdit m_edit2;
CEdit m_edit1;
//}}AFX_DATA
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTestDlg)
DDX_Control(pDX, IDC_EDIT3, m_edit3);
DDX_Control(pDX, IDC_EDIT2, m_edit2);
DDX_Control(pDX, IDC_EDIT1, m_edit1);
//}}AFX_DATA_MAP
}
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
m_edit1.GetWindowText(ch1,10);
m_edit2.GetWindowText(ch2,10);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);
m_edit3.SetWindowText(ch3);

通过以上案例就足够用了。

6.通过消息进行更改
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
//::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10, (LPARAM)ch1);//方法一
//::SendMessage(m_edit1.m_hWnd,WM_GETTEXT,10, (LPARAM)ch1);//方法二
//GetDlgItem(IDC_EDIT1)->SendMessage(WM_GETTEXT,10, (LPARAM)ch1);//方法三
m_edit1.SendMessage(WM_GETTEXT,10,(LPARAM)ch1);//方法四
m_edit2.SendMessage(WM_GETTEXT,10,(LPARAM)ch2);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);
m_edit3.SendMessage(WM_SETTEXT,0,(LPARAM)ch3);


7.通过Dlg消息进行处理
int num1,num2,num3;
char ch1[10],ch2[10],ch3[10];
SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)ch1);
SendDlgItemMessage(IDC_EDIT2,WM_GETTEXT,10,(LPARAM)ch2);
num1=atoi(ch1);
num2=atoi(ch2);
num3=num1+num2;
itoa(num3,ch3,10);
SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,0,(LPARAM)ch3);
SendDlgItemMessage(IDC_EDIT3,EM_SETSEL,0,-1);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值