首先,有2种,
一种是在资源编辑器里面添加的,就和易语言那样的,不多说了
这里说手工创建

以单文档模板为例,
你可以用类向导或者是手工添加,反正要在对应位置(头文件)添加成员变量(对象),
比如我要创建一个Button对象,
那么在头文件添加
[cpp]CButton button1; // 注意大小写[/cpp]
这样就有了一个button对象,然后在WM_Create消息中,(MFC一般是OnCreate)添加对象的构造
[ccp]button1.Create();[/cpp]
这样就完成了一个控件的创建,

既然创建了,我们就要去使用它,

用资源编辑器创建的控件,双击控件就能自动添加相应的消息响应,

那么动态创建的控件如何做消息响应呢?

很简单,首先在消息区添加相应的代码,例如
[cpp]
BEGIN_MESSAGE_MAP(CChildView, CWnd)
ON_WM_PAINT()
//
ON_COMMAND(50101,&CChildView::OnButtonCreateVpnFree1)
ON_COMMAND(50102,&CChildView::OnButtonCreateVpnFree2)
ON_COMMAND(50111,&CChildView::OnButtonCreateVpnFree3)
ON_COMMAND(50112,&CChildView::OnButtonCreateVpnFree4)
ON_COMMAND(50001,&CChildView::OnConnectVpnButton)
ON_COMMAND(50002,&CChildView::OnDisconnectVpnButton)
//
ON_WM_CREATE()
ON_COMMAND(IDM_HOWTOUSE, &CChildView::OnHowtouse)
ON_COMMAND(IDM_CHECKUPDATE, &CChildView::OnCheckupdate)
ON_COMMAND(IDM_UPDATESERVER, &CChildView::OnUpdateserver)
END_MESSAGE_MAP()
[/cpp]
这其中的 //和// 中间的消息响应,就是我手动创建的,
注意,这里有个顺序问题,一般来说,绝对不能有消息在”ON_WM_PAINT()”之前,
不然你可以自己试试会有什么后果.

好,既然完成了消息的获取,那么就要在实现代码中添加相应的响应函数,比如”CChildView::OnButtonCreateVpnFree3()”,具体不多说了
反正动态创建控件是很简单的,如果你有SDK的基础,我想这对你来说不在话下,一般人都是消息响应那块有问题.