实现按钮单击时的消息处理函数如下:
先创建一个 BOOL型变量,用来判断是否已经添加过按钮,将其初始值设为FALSE。
因控件类继承于CWnd,所以控件也是窗口, m_hWnd是CWnd类的一个public成员变量,再者每当一个窗体与CWnd类相关联时,会将窗体的句柄赋值给m_hWnd,否则m_hWnd为空,所以也可以通过窗体对象的成员变量m_hWnd来判断是否已经创建过按钮。
voidCTestDlg::OnBtnAdd()
{
// TODO: Add your control notificationhandler code here
if (!m_bIsCreated/*m_btn. m_hWnd*/)//也可使用m_btn对象中的成员变量h_Wnd判断句柄是否有值
{
m_btn.Create("feiyan",BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,
CRect(0, 0, 100, 50), this,123); //在对话框上动态添加一个按钮
m_bIsCreated = TRUE; //判断是否已经创建了按钮,是的话销毁,现点击可再重新创建
}
else
{
m_btn.DestroyWindow(); //销毁窗口,因为按钮也是从CWnd继承来
m_bIsCreated = FALSE;
}
}