• 向控件添加变量之后,类中多了什么?


    1.新建一个MFC对话框项目名字为:Addition。

    2.插入一个新的对话框资源IDD_DIALOG1,右键添加一个类:CMyDialog

    3.此时,在左侧的“解决方案资源管理器”中多出两个文件:MyDialog.h  MyDialog.cpp

    下面是这两个文件的内容:

    MyDialog.h

    #pragma once
    
    
    // CMyDialog 对话框
    
    class CMyDialog : public CDialogEx
    {
        DECLARE_DYNAMIC(CMyDialog)
    
    public:
        CMyDialog(CWnd* pParent = NULL);   // 标准构造函数
        virtual ~CMyDialog();
    
    // 对话框数据
        enum { IDD = IDD_DIALOG1 };
    
    protected:
        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
    
        DECLARE_MESSAGE_MAP()
    };

    MyDialog.cpp

    // MyDialog.cpp : 实现文件
    //
    
    #include "stdafx.h"
    #include "Addition.h"
    #include "MyDialog.h"
    #include "afxdialogex.h"
    
    
    // CMyDialog 对话框
    
    IMPLEMENT_DYNAMIC(CMyDialog, CDialogEx)
    
    CMyDialog::CMyDialog(CWnd* pParent /*=NULL*/)
        : CDialogEx(CMyDialog::IDD, pParent)
    {
    
    }
    
    CMyDialog::~CMyDialog()
    {
    }
    
    void CMyDialog::DoDataExchange(CDataExchange* pDX)
    {
        CDialogEx::DoDataExchange(pDX);
    }
    
    
    BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)
    END_MESSAGE_MAP()
    
    
    // CMyDialog 消息处理程序

    4.我们在最初的对话框上,画3个EDIT,1个BUTTON,做一个加法计算器的界面。

    5.然后在第一个EDIT控件上右键 --> 添加变量 --> m_editSummand,其余控件变量名为:

    m_editAddend、m_editSum

    6.此时,我们新建的类中并没有多出什么。但是最初的对话框类中却多了一些东西:

     

    7.注意:上面左图的3个控件变量属性要改成double。

    【我们想为其添加值变量而不是控件变量,所以对话框中“Category”下的组合框中选择Value。】

    如果我们在程序运行界面中输入被加数,则通过CAddition的DoDataExchange()函数可以将输入的值保存到m_editSummand变量中,反之如果程序运行中修改了变量m_editSummand的值,则通过CAddition的DoDataExchange()函数也可以将新的变量值显示到被加数的编辑框中。但是这种数据交换机制中,DoDataExchange()并不是被自动调用的,而是需要我们在程序中调用CDialogEx::UpdateData()函数,由UpdateData()函数再去自动调用DoDataExchange()的。

    8.

    CDialogEx::UpdateData()函数的原型为:
    BOOL UpdateData(BOOL bSaveAndValidate = TRUE);
    参数:bSaveAndValidate用于指示数据传输的方向,TRUE表示从控件传给变量,FALSE表示从变量传给控件。默认值是TRUE,即从控件传给变量。返回值:CDialogEx::UpdateData()函数的返回值表示操作是否成功,成功则返回TRUE,否则返回FALSE。

    9.

    我们可以通过:1.项目 --> Class Wizard 2.右键 --> 添加事件处理程序 3.右侧属性 --> 控件事件 4.双击按钮

    添加一个函数:

    void CAdditionDlg::OnBnClickedAddButton()
    {
    
        // TODO: 在此添加控件通知处理程序代码
    }

    10.

    然后我们要做的是:把控件中的值传给相关变量,计算出结果后把值再传给控件(显示出来)。

    void CAdditionDlg::OnBnClickedAddButton()
    {
        // 将各控件中的数据保存到相应的变量
        UpdateData(TRUE);
        m_editSum = m_editSummand + m_editAddend; 
        // 根据各变量的值更新相应的控件。和的编辑框会显示m_editSum的值 
        UpdateData(FALSE);
        // TODO: 在此添加控件通知处理程序代码
    }

  • 相关阅读:
    和菜鸟一起学产品之产品经理的自我管理能力
    和菜鸟一起学产品之产品经理的工作职责
    遗传算法解决TSP问题实现以及与最小生成树的对比
    双系统或三系统:Grub Rescue修复方法
    err:安装程序试图挂载映像 1(缺少ISO 9660图像)
    OpenCV手写数字字符识别(基于k近邻算法)
    最小生成树
    ubuntu12.04:Tomcat 7服务器:手动安装
    ubuntu12.04:jdk7:手动安装
    ubuntu12.04:Mysql数据库:手动安装
  • 原文地址:https://www.cnblogs.com/qiangua/p/3683915.html
Copyright © 2020-2023  润新知