zoukankan      html  css  js  c++  java
  • VC++ 控件数组操作时用常用方法

    ON_COMMAND 以及 ON_COMMAND_RANGE 是用于处理菜单项或工具栏按钮的命令消息的 对于复选框这样的控件,请使用ON_CONTROL_RANGE

    1. 打开 resource.h,将你的复选框控件ID进行连续编号,例如1001,1002...

    2. 在对话框类的头文件中添加公有成员函数:afx_msg void OnCheckBox(UINT uID) ;

    3. 在对话框类的cpp文件中BEGIN_MESSAGE_MAP(CTestDlg, CDialog) 的 //}}AFX_MSG_MAP下添加代码 ON_CONTROL_RANGE(BN_CLICKED,1001,1003,OnCheckBox)

    4. 然后在cpp文件中添加函数void CTestDlg::OnCheckBox(UINT uID) {}

    5. 在函数内判断 uID,来确定用户单击了哪项复选框,并作相应处理。

    如果是静态(已知)个数的控件数组,实现还是比较简单的。     

    1.在Menu\View\Resource   Symbols中建立一些连续的ID,比如IDC_MYBUTTONS值为900,在此之后要留出足够多连续的空的ID。     
    2.以做按钮数组为例:在头文件中定义一组按钮指针,我这里定义4个。      CButton   *   m_pButton[4];     
    3.在需要建立控件数组的地方,比如Dialog的InitDialog()中,生成按钮。      for(int   i=0;i<=3;i++)      {      m_pButton[i]=new   CButton;            m_pButton[i]->Create(TEXT("按钮标题"),BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,CRect(0,i*40,100,i*40+40),this,IDC_MYBUTTONS+i);   //CRect中指定按钮的位置与大小。      }     
    4.控件生成后要自己做消息映射,ClassWizard不支持。     
    在CPP文件中建立消息映射:      ON_COMMAND_RANGE(IDC_MYBUTTONS,IDC_MYBUTTONS+3,OnButton)      在头文件中声明响应消息的函数:      afx_msg   void   OnButton(UINT   nID);     
    在CPP文件中实现消息响应函数:      void   CKJSZDlg::OnButton(UINT   nID)         {      //   TODO:   Add   your   control   notification   handler   code   here            }      上面比较关键的是在做响应函数时要带UINT   nID参数,否则在函数中就无法分辨是一组控件中的哪一个产生的消息。      有了nID就可以很方便的用GetDlgItem(nID)来获得指向该控件的指针,并对控件进行必要的操作。

  • 相关阅读:
    java9
    java8
    java7
    java6
    java5
    java4
    java-list-分组
    Termux中安装gcc-7/gfortran-7实操过程,安装成功可以编译Fortran,c/c++
    安卓手机牛逼软件Termux中安装Archlinux,安装Jdk
    c++语言的组合类的使用,用组合类的方法计算两点间距离。
  • 原文地址:https://www.cnblogs.com/vic_lu/p/2308999.html
Copyright © 2011-2022 走看看