dreamangel

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  14 随笔 :: 0 文章 :: 0 评论 :: 0 Trackbacks

1.在Menu\View\Resource Symbols中建立一些连续的ID,比如IDC_MYBUTTONS值为900,在此之后要留出足够多连续的空的ID。 
2.以做按钮数组为例:在头文件中定义一组按钮指针,我这里定义16个:
  CButton* m_pButton[16];
3.在需要建立控件数组的地方,比如Dialog的InitDialog()中,生成按钮:
  for(int i=0,j=0,k=0;i<16;i++,k++){
 if(i>0 && i%4==0){
  j+=100;
  k=0;
 }
 this->m_pButton[i] = new CButton;
 //this->m_pButton[i]->Create(TEXT("按钮标题"),BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,CRect(j,k*40,j+100,k*40+40),this,IDC_MYBUTTONS+i);   //CRect中指定按钮的位置与大小。 
 CString s;
 s.Format("%d", i);
 this->m_pButton[i]->Create(TEXT(s.GetBuffer(s.GetLength())),BS_PUSHBUTTON|WS_CHILD|WS_VISIBLE,CRect(j,k*40,j+100,k*40+40),this,IDC_MYBUTTONS+i);   //CRect中指定按钮的位置与大小。   
  }
  运行效果如下:

4.控件生成后要自己做消息映射,ClassWizard不支持。
  在CPP文件中建立消息映射:
  ON_COMMAND_RANGE(IDC_MYBUTTONS,IDC_MYBUTTONS+15,OnButton)
  注意:要在ClassWizard添加其他消息映射时必须先注释以上语句,否则会出错!
  在头文件中声明响应消息的函数:
  afx_msg void OnButton(UINT nID);
  在CPP文件中实现消息响应函数:
  void  CAbcDlg::OnButton(UINT nID)
  {
 //   TODO:   Add   your   control   notification   handler   code   here 
 CString str;
 GetDlgItem(nID)->GetWindowText(str);
 MessageBox("该按钮的标题是:"+str);
   } 


  上面比较关键的是在做响应函数时要带UINT nID参数,否则在函数中就无法分辨是一组控件中的哪一个产生的消息。有了nID就可以很方便的用GetDlgItem(nID)来获得指向该控件的指针,并对控件进行必要的操作。
 

posted on 2010-10-28 21:07 飞翔天使 阅读(2313) 评论(0)  编辑 收藏 引用 所属分类: 游戏编程

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理