• 有几个控件的操作时有关联关系,一个对话框中有多组这样的控件群,各个组中的控件的消息响应处理非常类似,以下提供解决方案


    有几个控件的操作时有关联关系,一个对话框中有多组这样的控件群,各个组中的控件的消息响应处理非常类似,以下提供解决方案
    1、定义控件ID记录结构
    typedef  struct 
    {
     UINT nTxtFilePath;
     UINT nBrowseBtn;
     UINT nCleanBtn;
     UINT nCleanCheck;
    } DLG_ITEM_GROUP;

    2、定义控件组ID
    enum { CD_R0 = 0,
    CD_R1 = 1,
    CD_R2 = 2,
    CD_G0 = 3,
    CD_G1 = 4,
    CD_G2 = 5,
    CD_B0 = 6,
    CD_B1 = 7,
    CD_B2 = 8};
    3、记录所有控件ID记录
    m_DlgItemGroups[CD_R0].nTxtFilePath = IDC_COLOR_R0;
    m_DlgItemGroups[CD_R0].nBrowseBtn = IDC_BUTTON_R0;
    m_DlgItemGroups[CD_R0].nCleanBtn = IDC_BUTTON_CLEAN_R0;
    m_DlgItemGroups[CD_R0].nCleanCheck = IDC_CHECK_CLEAN_R0;

    ....

    m_DlgItemGroups[CD_B2].nTxtFilePath = IDC_COLOR_B2;
    m_DlgItemGroups[CD_B2].nBrowseBtn = IDC_BUTTON_B2;
    m_DlgItemGroups[CD_B2].nCleanBtn = IDC_BUTTON_CLEAN_B2;
    m_DlgItemGroups[CD_B2].nCleanCheck = IDC_CHECK_CLEAN_B2;
    4、定义消息处理函数
    int CCDOperDlg3::OnBnClickedButtonCleanMessage(int nID)
    {
     //
     GetDlgItem(m_DlgItemGroups[nID].nTxtFilePath)->SetWindowText(_T(""));

     CButton *pCheck = (CButton *)GetDlgItem(m_DlgItemGroups[nID].nCleanCheck);
     pCheck->SetCheck(TRUE);

     UpdateData(); // 使用此函数后,不知界面上窗口的状态发生变化,窗口关联的变量也将放生便哈
     return 0;
    }
    5、按钮消息处理
    void CCDOperDlg3::OnBnClickedButtonCleanR0()
    void CCDOperDlg3::OnBnClickedButtonCleanR1()
    void CCDOperDlg3::OnBnClickedButtonCleanR2()
    ...
    void CCDOperDlg3::OnBnClickedButtonCleanB1()
    void CCDOperDlg3::OnBnClickedButtonCleanB2()
    {
     // TODO: ?ú′?ìí?ó???tí¨?a′|àí3ìDò′ú??
     OnBnClickedButtonCleanMessage(CD_B2);
    }

  • 相关阅读:
    免费下载 80多种的微软推出入门级 .NET视频
    和付费网盘说再见,自己搭建个人网盘(Java 开源项目)
    JS惰性删除和定时删除可过期的localStorage缓存,或sessionStorage缓存
    docker——系列文章
    Bash 脚本教程
    Sublime text3里 修改TAB键为缩进为四个空格
    百度网盘不限速,直接获取直链
    技术党适合做浏览器首页的网站
    常用电脑软件
    有哪些开源的 Python 库让你相见恨晚?
  • 原文地址:https://www.cnblogs.com/carl2380/p/1964894.html
Copyright © 2020-2023  润新知