代码改变世界

MFC中手工创建控件

2008-04-29 06:29  ubunoon  阅读(216)  评论(0编辑  收藏  举报

本文以创建按钮为例       在VC中创建一个对话框工程,本例中为“手工创建控件”,为方便起见,我们在对话框中先画一个按钮,并将按钮ID设置为:IDC_CREATE_BUTTON,标题为:“创建”,然后在Dlg对话框类下面创建一个CButton *pButton的指针变量,在OnInitDialog中把pButton指向NULL,完成初始化之后,开始编写创建按钮代码,在IDC_CREATE_BUTTON按钮上双击,进入到:    void CMyDlg::OnCreateButton() 代码编写中,编写如下代码:

void CMyDlg::OnCreateButton()
 { 
   // TODO: Add your control notification handler code here 
   if(pButton == NULL)  
         pButton = new CButton; 
  static BOOL bCreate = FALSE; 
  if( !bCreate ) 
   { 
       TCHAR szCaption[] = TEXT("手工创建按钮");  
       DWORD dwStyle = WS_CHILD| WS_GROUP | WS_VISIBLE | WS_TABSTOP ; 
       CRect r ;  
       GetClientRect(&r);  
       r.left = r.left +100;  
       r.right = r.left + lstrlen(szCaption)*10;  //一个字约10个像素大小
       r.bottom = r.top + 20;  
       pButton->Create(szCaption,dwStyle,r,this,IDC_CREATE_BUTTON+1); 
       bCreate = TRUE; 
  }
}

然后编写创建按钮测试代码,在CMyDlg中编写 
  afx_msg void OnPress();
在消息宏处理中编写
  ON_BN_CLICKED(IDC_CREATE_BUTTON, OnPress)
然后在类定义中编写
  void MyDlg::OnPress()
{
      AfxMessageBox("按钮被按下");     //用一个消息框提示按钮创建成功
}

之后编译运行,点击创建按钮,将在对话框顶端创建一个标题为:“手工创建按钮”的按钮,点击后将抛出一个“按钮被按下”的消息框。