MFC中手工创建控件

本文以创建按钮为例       在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("按钮被按下");     //用一个消息框提示按钮创建成功
}

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

/*
*
* Copyright (c) 2011 Ubunoon.
* All rights reserved.
*
* email: netubu#gmail.com replace '#' to '@'
* http://www.cnblogs.com/ubunoon
* 欢迎来邮件定制各类验证码识别,条码识别,图像处理等软件
* 推荐不错的珍珠饰品,欢迎订购 * 宜臣珍珠(淡水好珍珠) */
原文地址:https://www.cnblogs.com/ubunoon/p/2058912.html