zoukankan      html  css  js  c++  java
  • MFC里面的响应对话框里的Edit控件的几种方法

    第一种:利用组合的GetDlgItem()和GetWindowText()函数获得控件信息,利用GetDlgItem()->SetWindowText()设置信息

    	int num1,num2,num3;
    	char ch1[10],ch2[10],ch3[3];
    	GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10);//获得Eidt1控件的内容
    	GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10);
    	//GetDlgItem(IDC_EDIT3)->GetWindowText(ch3,10);
    	num1=atoi(ch1);
    	num2=atoi(ch2);
    	//num3=atoi(ch3);
    	num3=num1*num2;
    	itoa(num3,ch3,10);
    	GetDlgItem(IDC_EDIT3)->SetWindowText(ch3);
    第二种:利用GetDlgItemText()函数,其本质上等价于GetDlgItem()->GetWindowText()SetDlgItemText()函数
    	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);

    第三种:利用GetDlgItemInt()和SetDlgItemInt()获取整形数

    	num1=GetDlgItemInt(IDC_EDIT1);
    	num2=GetDlgItemInt(IDC_EDIT2);
    	num3=num1*num2;
    
    	SetDlgItemInt(IDC_EDIT3,num3);

    第四种:添加控件的成员变量;利用classwizard;注意此处是value变量;直接在Edit控件上输入可以保存到成员变量 m_edit1和m_edit2里面;此时需要利用update()函数来更新数据内容; TRUE:写入,FALSE 写出;

    	UpdateData(TRUE);
    	m_num3=m_num1*m_num2;
    	UpdateData(FALSE);
    

    第五种:添加控件的控制变量,CEdit类型,利用classwizard;此时利用CEdit的函数来维护数据操作;

    	int num1,num2,num3;
    	char ch1[10],ch2[10],ch3[3];
    	m_edit.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)

    第六种:利用win32API函数sendmessage(),注意此函数的参数格式;第一个参数是该控件的句柄,根据其的获得方式,又可以更详细划分几种方式:

    	int num1,num2,num3;
    	char ch1[10],ch2[10],ch3[10];
    	::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10,(LPARAM)ch1);//此处加上::表示调用的是win32API函数,而不是类的成员函数,	//第一个参数是控件句柄,两种方法获得,此处利用函数获得;发送系统消息WM_GETTEXT;
    	::SendMessage(m_edit2.m_hWnd,WM_GETTEXT,10,(LPARAM)ch2);//利用控件的CEdit成员变量获得此控件的句柄,其余相同
    	//GetDlgItem(IDC_EDIT1)->SendMessage(WM_GETTEXT,10,(LPARAM)ch1);//此处先利用GetDlgItem()获得控件句柄,然后发送消息
    
    	//m_edit.SendMessage(WM_GETTEXT,10,(LPARAM)ch1);//直接利用成员Cedit变量来获得控件句柄
    	num1=atoi(ch1);
    	num2=atoi(ch2);
    	num3=num1*num2;
    	itoa(num3,ch3,10);
    	m_edit3.SendMessage(WM_SETTEXT,0,(LPARAM)ch3);

    第七种:利用SendDlgItemMessage()函数,其本质也是讲sendmessage和getDlgitemm合并起来,发送get和set消息;

    	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);


    总结:对话框控件访问的其中方式
    1 GetDlgItem()->Get(Set)WindowText()
    2 GetDlgItemText()/SetDlgItemText()
    3 GetDlgItemInt() /  SetDlgItemInt()
    4 将控件和整形变量关联;
    5 讲控件和控件变量关联;
    6 sendMessage()
    7 sendDlgItemMessge();



    补充:WM_GETTEXT和WM_SETTEXT是标准获得Edit控件里面的所有消息;
             另外一种获得选取部分内容的消息时:EM_GETSEL;
    EM_SETSEL是设定选取部分的大小的消息;
    	SendDlgItemMessage(IDC_EDIT3,EM_SETSEL,0,-1);//设置复选框1到3的内容,不含1,含3;
    						     //如果此时起始设为0,终止设为-1,则复选EDIT控件所有内容;
    	m_edit3.SetFocus();//设置焦点为当前控件;即为m_edit3指示的;





  • 相关阅读:
    linux分析、诊断及调优必备的“杀器”之二
    浏览器被“hao123.3377.com”主页劫持的解决办法
    Nginx一个实现负载均衡的强大web server
    【百度之星
    c/c++ 参数传递
    【百度之星】-IP聚合
    百度之星-大搬家-递推
    IOS开发之Swift学习笔记
    【Leetcode】84. Largest Rectangle in Histogram 85. Maximal Rectangle
    【Leetcode】82. Remove Duplicates from Sorted List II
  • 原文地址:https://www.cnblogs.com/HuaiNianCiSheng/p/5303270.html
Copyright © 2011-2022 走看看