动态创建按钮

实现功能:

点击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();

阅读更多
想对作者说点什么? 我来说一句

MFC中动态创建多个按钮

2014年01月06日 1.79MB 下载

没有更多推荐了,返回首页

不良信息举报

动态创建按钮

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭