关闭

动态创建按钮

69人阅读 评论(0) 收藏 举报

实现功能:

点击A按钮,然后在对话框上生成一个B按钮;

 

算法:

第一步:在对话框上静态绘制一个A按钮IDC_BTN_ADD

第二步:在CTestDlg类里面创建A按钮命令响应函数;

void CTestDlg::OnBtnAdd()

{

       // TODO: Add your control notification handler code here

 

}

第三步:在命令响应函数里面创建动态按钮;

void CTestDlg::OnBtnAdd()

{

      // TODO: Add your control notification handler code here

      m_btn.Create("维新",BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,CRect(0,0,100,100),this,123); 

}

 

问题:点击两次要出错?

m_btn已经绑定了一个按钮,不能再绑定第二个按钮;

 

解决方法一:成员变量;

CTestDlg类里面增加BOOL m_bIsCreate;判断是否已经创建了一个按钮;

代码修改为:

       if(!m_bIsCreate)

           m_btn.Create("维新",BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,CRect(0,0,100,100),this,123); 

       else

{

        m_btn.DestroyWindow();

           m_bIsCreate=FALSE;

}

使用局部变量BOOL bIsCreate=FALSE; 是不可以的;

解决方法二:静态变量:

static BOOL bIsCreate=FALSE;

if(!bIsCreate)

           m_btn.Create("维新",BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,CRect(0,0,100,100),this,123); 

       else

{

        m_btn.DestroyWindow();

           m_bIsCreate=FALSE;

}

★★★★★解决方法三:句柄;

使用按钮自身的句柄:

       if(!m_btn.m_hWnd)

           m_btn.Create("维新",BS_DEFPUSHBUTTON | WS_VISIBLE | WS_CHILD,CRect(0,0,100,100),this,123); 

       else

        m_btn.DestroyWindow();

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4792次
    • 积分:126
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:8篇
    • 译文:0篇
    • 评论:0条
    文章存档