zoukankan      html  css  js  c++  java
  • MFC动态创建对话框中的按钮控件并创建其响应消息

    转自:http://www.cnblogs.com/huhu0013/p/4626686.html

    动态按钮(多个)的创建:

    1、在类中声明并定义按钮控件的ID

    #define IDC_D_BTN 10000

    2、在类的OnInitDialog()函数中动态创建按钮(建立按钮对象时最好建立对象的指针)

    3、手动释放对象指针

    下面是动态生成多个按钮的例子:

    CButton* btn = new CButton[5];  
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON;  
    for(int i = 0; i < 5; i++)
    {  
        btn[i].Create(_T("动态按钮"), dwStyle,CRect(20+80*i,20,80+80*i,60),this,IDC_D_BTN+i);    
    }  

    注:Create()的第一个参数为按钮的标题,可直接给出(如上所示),也可在String Table中先定义字符串,再利用控件的LoadString()函数将字符串读取进来

    程序运行效果如下所示:

    动态按钮(多个)的消息响应:

      一个MFC的消息响应函数在程序中有三处相关信息:函数原型函数实现以及用来关联消息和消息响应函数的宏。头文件中在两个AFX_MSG注释宏之间是消息响应函数原型的声明。源文件中有两处:一处是在AFX_MSG_MAP注释宏之间的消息映射宏,用来关联消息和消息响应函数的宏;另一处是源文件中的消息响应函数的实现代码。

    下面为动态生成的多个按钮的消息响应的建立步骤:

    1、在对话框类的定义文件(.h文件)中声明消息响应函数OnButtonClick

    afx_msg void OnButtonClick(UINT uID);

    注:OnButtonClick函数的参数nID代表响应函数对应按钮控件的ID号,单个按钮可不设参数

    2、在对话框类的函数实现文件(.cpp文件)中定义消息映射ON_COMMAND_RANGE     (多个按钮)

      在函数实现文件中的消息映射部分(BEGIN_MESSAGE_MAP与END_MESSAGE_MAP之间)定义按钮控件与其消息响应函数之间的映射关系。

    ON_COMMAND_RANGE(IDC_D_BTN,IDC_D_BTN+5-1,OnButtonClick)

      对于所有动态创建的5个按钮(ID号在IDC_D_BTN ~ IDC_D_BTN+5-1之间),定义其消息映射函数为OnButtonClick函数,根据其输入ID分辨具体响应那个按钮。

      若是单个按钮,则消息映射为ON_BN_CLICKED

    ON_BN_CLICKED(IDC_BUTTON_ID, OnButtonFunc)

    3、实现消息响应函数OnButtonClick

      在对话框类的函数实现文件(.cpp文件)中给出具体的按钮消息响应

  • 相关阅读:
    获得自动增长的MySQL主键
    HTTP协议状态码的含义
    HttpServletResponse接口
    http header详解
    ORACLE中大数据量查询实现优化
    amqp rabbitMQ docker-composer
    阿里云OSS上传Invalid Object Name错误
    PHP7**幂运算执行顺序
    MySQL join 连表查询索引问题
    Composer改阿里国内镜像
  • 原文地址:https://www.cnblogs.com/xingkai/p/6406714.html
Copyright © 2011-2022 走看看