zoukankan      html  css  js  c++  java
  • 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);//将变量的值传给控件 

  • 相关阅读:
    C# Excel工作表区域Range装入数组
    【Word VBA】批量插入图片到表格
    C# Office Com 开发 创建任务窗格 CustomTaskPane
    C# Office Com 开发 Excel插件与函数dll注册
    视频逐帧转换为图片
    ssh 免密登录
    NPS 内网穿透配置
    php7.3 centos Call to undefined function AdminControllermcrypt_get_block_size()
    Centos 6 安装 php7.3.x
    nginx配置之proxy_pass路径加斜杠/以及包含路径的区别
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318498.html
Copyright © 2011-2022 走看看