• 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指示的;





  • 相关阅读:
    微软外服 AlI In One
    js 循环多次和循环一次的时间的性能对比 All In One
    vue inject All In One
    Excel 表格数据倒置 All In One
    SVG tickets All In One
    OH MY ZSH All In One
    js array for loop performance compare All In One
    mac terminal show You have new mail All In one
    新闻视频 26 制作母版页
    转自牛腩 母版页和相对路径
  • 原文地址:https://www.cnblogs.com/HuaiNianCiSheng/p/5303270.html
Copyright © 2020-2023  润新知