VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 404|回复: 1

[分享] c++学习之路-七种方法--MFC编辑框数据读写

[复制链接]
13_avatar_middle
最佳答案
1 
在线会员 发表于 2021-3-26 15:58:26 | 显示全部楼层 |阅读模式
熟练使用25种下断技巧以毒攻毒才是乐趣。新增爆破36经典定式配合x64dbg变态修改定位尤佳
侦查敌情,摸清软肋,顺藤摸瓜,反客为主,敌进我退,敌驻我扰,敌疲我打,敌退我追
努力提问多多交流每天解决一个问题!你要对得起你逝去的时间,要想学好破解还得学会太极周流劲。新增大白补丁菜单项与汇编命令对照修改一览表
x36dbg贴心伴侣传新增逆天新技能,自创最新功法'逆向八法'是从五子棋坐棋实战+逆向爆破中来演绎来的。以已之长克敌之短,不断制造机会寻找真我和突破口,以无法为有法,化无限为有限



通用对话框的练习 2021年3月26日14:54:28  献给和我一样刚学习mfc的朋友,

MFC_对话框_访问控件  7种方法  小例子
方法一:

GetDlgItem(控件id)->GetWindowText(接收的变量,最大长度)

GetDlgItem(控件id)->SetWindowText(传的数据)
      int num1, num2, num3;  
        TCHAR ch1[12], ch2[12], ch3[12];   //用来保存输入的字符串

         //拿到编辑框GetDlgItem(控件id)-> 获取里面的内容        GetWindowTextW(接收的变量,最大长度)
        GetDlgItem(IDC_EDIT1)->GetWindowTextW(ch1, 12);
        GetDlgItem(IDC_EDIT2)->GetWindowTextW(ch1, 12);
        num1 = _ttoi(ch1);
        num2 = _ttoi(ch2);
        num3 = num1 + num2;
        //将num3作为十进制数转换为字符类型赋值给ch3
        _itot_s(num3, ch3, 10); //10进制   16和8数据会不一样
        //修改里面的内容SetWindowTextW(传的数据)
        GetDlgItem(IDC_EDIT3)->SetWindowTextW(ch3);

方法二:

     GetDlgItemText(控件id,接受数据的变量,最大长度)

     SetDlgItemText(控件id,传数据的变量)

        int num1, num2, num3;
        TCHAR ch1[12], ch2[12], ch3[12];   //用来保存输入的字符串                                                                    
      //GetDlgItemText(控件id,接受数据的变量,最大长度)
        GetDlgItemText(IDC_EDIT1, ch1, 12);
        GetDlgItemText(IDC_EDIT2, ch2, 12);
        /*num1 = _ttoi(ch1);
        num2 = _ttoi(ch2);
        num3 = num1 + num2;*/
        num3 = _ttoi(ch1) + _ttoi(ch2);
        //将num3作为十进制数转换为字符类型赋值给ch3
        _itot_s(num3, ch3, 10); //10进制   16和8数据会不一样
                                                       
        SetDlgItemText(IDC_EDIT3, ch3);

方法三:

GetDlgItemInt(ID)以整数形式返回根据id获得的控件的数据

SetDlgItemInt(ID,数值)将整数类型的数据传给id指定的控件
        int num1, num2, num3;
        num1=GetDlgItemInt(IDC_EDIT1);
        num2 = GetDlgItemInt(IDC_EDIT2);
        num3 = num1 + num2;
        SetDlgItemInt(IDC_EDIT3, num3); //SetDlgItemInt(IDC_EDIT3, num1 + num2);

方法四:

把控件和整形变量相关联

为三个编辑框分别添加变量m_num1, m_num2和 m_num3,为按钮添加事件,即可在cpp文件中直接获取值 。

取值之前需调用UpdateData(True);同步控件的值到变量里;计算后,需通过UpdateData(FALSE);将变量的值同步进控件。
        DDX_Text(pDX, IDC_EDIT1, m_num1);
        DDX_Text(pDX, IDC_EDIT2, m_num2);
        DDX_Text(pDX, IDC_EDIT3, m_num3);
关联使用的四个函数:


DoDataExchange()做数据关联


DDX_xxxx() 做关联的


DDV_xxxx() 做验证的


UpdateData()更新关联的数据


UpdateData(TRUE) :将控件里的数据关联到变量里


UpdateData(FALSE):将变量的值同步到控件里

方法五:

把控件和控件变量相关联

GetWindowText(接收数据的变量,数据长度最大)

SetWindowText(待传的数据)

先为编辑框分别添加控件,控件变量名为:m_edit1,m_edit2,m_edit3;


然后通过控件调用GetWindowText()方法 获取控件内容,随后做处理

最后通过控件调用SetWindowText()方法 修改控件内容
        int num1, num2, num3;
        TCHAR ch1[12], ch2[12], ch3[12];   //用来保存输入的字符串
        m_edi1.GetWindowTextW(ch1,12);
        m_edi2.GetWindowTextW(ch2, 12);
        num3 = _ttoi(ch1) + _ttoi(ch2);
        _itot_s(num3, ch3, 10);
        m_edi3.SetWindowTextW(ch3);
方法六:

::SendMessage(控件的窗口句柄,消息,数据长度,数据)

LPARAM:数据作为消息的附加参数类型
        int num1, num2, num3;
        TCHAR ch1[12], ch2[12], ch3[12];   //用来保存输入的字符串
        ::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd, WM_GETTEXT, 12, (LPARAM)ch1);
        ::SendMessage(GetDlgItem(IDC_EDIT2)->m_hWnd, WM_GETTEXT, 12, (LPARAM)ch2);
        _itot_s(_ttoi(ch1) + _ttoi(ch2),ch3,10);
        ::SendMessage(GetDlgItem(IDC_EDIT3)->m_hWnd, WM_SETTEXT, 0, (LPARAM)ch3);

方法七:

::SendDlgItemMessage(当前窗口句柄,控件id,消息id,数据长度,数据)

数据长度,数据 作为消息的附加信息进行传递

SendDlgItemMessage(控件id、消息id,数据长度,数据)

        int num1, num2, num3;
        TCHAR ch1[12], ch2[12], ch3[12];   //用来保存输入的字符串
        ::SendDlgItemMessage(m_hWnd, IDC_EDIT1, WM_GETTEXT, 12, (LPARAM)ch1);
        ::SendDlgItemMessage(m_hWnd, IDC_EDIT2, WM_GETTEXT, 12, (LPARAM)ch2);
        _itow_s(_ttoi(ch1) + _ttoi(ch2), ch3, 10);
        ::SendDlgItemMessage(m_hWnd, IDC_EDIT3, WM_SETTEXT, 0, (LPARAM)ch3);

=========================================================
        SendDlgItemMessage(IDC_EDIT1, WM_GETTEXT,12, (LPARAM)ch1);
        SendDlgItemMessage(IDC_EDIT2, WM_GETTEXT, 12, (LPARAM)ch2);
        _itot_s(_ttoi(ch1) + _ttoi(ch2), ch3, 10);
        SendDlgItemMessage(IDC_EDIT3, WM_SETTEXT, 12, (LPARAM)ch3);
==============================================================================
        SendDlgItemMessage(IDC_EDIT1, WM_GETTEXT,12, (LPARAM)ch1);
        SendDlgItemMessage(IDC_EDIT2, WM_GETTEXT, 12, (LPARAM)ch2);
        /*_itot_s(_ttoi(ch1) + _ttoi(ch2), ch3, 10);*/
        num1 = _ttoi(ch1);
        num2 = _ttoi(ch2);
        num3 = num1 + num2;
        _itot_s(num3, ch3, 10);
        SendDlgItemMessage(IDC_EDIT3, WM_SETTEXT, 12, (LPARAM)ch3);




上一篇:c++的学习之路
下一篇:c++学习之路--通用字体对话框
58_avatar_middle
最佳答案
50 
online_vip 发表于 2021-3-26 23:31:47 | 显示全部楼层
催更,催更。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-4-23 04:49

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表