动态创建控件(此处以CButton为例)
方法1:
在.h文件中声明 控件类型
CButton bt1;
在类的OnPaint方法中,绘制按钮(.cpp文件中)
CButton bt1 = new CButton;
If(bt1 != NULL)
{
bt1.Create("OK",BS_CENTER,CRect(100,150,150,180),this,123);//123为控件的ID号(UINT型)
bt1.ShowWindow(SW_SHOW);
}
注册命令消息响应事件
在.h文件中声明消息
protected:
//{{AFX_MSG(Cleft)
afx_msg void OnPaint();
//}}AFX_MSG
// afx_msg void Onclick();
// ON_COMMAND_RANGE(2200,2204,ONClickButton);
afx_msg void onclick(UINT conid);
DECLARE_MESSAGE_MAP()
};
在.cpp文件中映射消息
BEGIN_MESSAGE_MAP(Cleft, CView)
//{{AFX_MSG_MAP(Cleft)
ON_WM_PAINT()
//}}AFX_MSG_MAP
ON_COMMAND(123,onclick)
END_MESSAGE_MAP()
实现消息函数
void Cleft::onclick(UINT conid)
{
AfxMessageBox("123");
}
方法2:
新建一个控件类,让它继承自你要实现的类 ( 如 CButton) ;在这个新建类中重载相应的事件 ( 如 OnClick 事件 ) ,在动太创建后,重写这个相应的消息实现函数即可。