• MFC对话框控件数据提取之DoDataExchange()


    对于这个函数,MSDN是这样描述的:Called by the framework to exchange and validate dialog data.

     

    大意是框架调用此函数来改写与确认对话框数据。 

    到是看了下DoDataExchange函数里的DDX型函数,似乎明白了DoDataExchange函数的作用。

     
    比如你设计一个游戏,在结束之后弹出个对话框,需要你输入大名,进而保存你结果分数的纪录(如图1),这时你就要在这个对话框类里添加一个变量,来提取文本框输入时的用户名。假设你的对话框ID为IDD_USERNAME_DIALOG,对应类为CUserDialog(UserDialog.cpp,UsernDialog.h),文本框控件的ID为IDC_USER_EDIT,为对话框类添加CString变量m_username,再用DoDataExchange函数将它绑定到你的动态按扭中,比如:DDX_Text(pDX,IDC_USER_EDIT, m_username);这就是将m_username(这是一个外部变量,其定义在对话框的构造函数里)绑定到IDC_USER_EDIT中。 


    MFC对话框控件数据提取之DoDataExchange()  

    void CUserDialog::DoDataExchange(CDataExchange* pDX) 

        CDialog::DoDataExchange(pDX); 
        DDX_Text(pDX, IDC_USER_EDIT, m_username); 
        DDV_MaxChars(pDX,m_username,10); //将用户名的最大长度控件在10个字符

    DDX:Dialog Data Exchange 表示对话框数据交换

    DDV:Dialog Data Valid 表示对话框数据有效性
    总之,这个函数对理解MFC框架是很有用的。对于写控件也是很有用的。 
    good good study,day day up..... 


    UpdataData函数内部调用了DoDataExchange。该函数只有一个布尔型参数,它决定了数据传送的方向。调用UpdateData(TRUE)将数据从对话框的控件中传送到对应的数据成员中,调用UpdateData(FALSE)则将数据从数据成员中传送给对应的控件。 

    UpdateData(FALSE)是将变量的值传到控件. 
    UpdateData(TRUE)是从控件中取值到关联的变量 



    DoDataExchange会被框架调用,用来改变和验证对话框的数据。在这个函数中一般是将控件和某些变量关联,当在其它地方改变量的值,通过UpdateData 进行双向交换。如: 

    UpdateData();//将控件的值传给变量 
    m_username= "风中在飘牛";//分别为控件的变量赋值 
    UpdateData(FALSE);//将变量的值传给控件 

  • 相关阅读:
    Problem: 八中上厕所
    Problem: 最短路上的统计
    股票买卖问题
    Redis(十二)——Redis为什么是单线程的?
    链表题汇总
    Redis(十一)——集群模式
    Redis(十)——哨兵模式
    Redis(九)——主从复制
    Redis(八)——客户端与服务器
    Redis(七)——事件
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318498.html
Copyright © 2020-2023  润新知