动态创建按钮

转载 2017年01月03日 16:18:20

实现功能:

点击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动态创建BUTTON

动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。 一、创建动态控件: 为了对照,我们先来看一下静态控件的创建。 放置静态控件时必须先建立一个容器,...
  • jiangqin115
  • jiangqin115
  • 2014年09月25日 10:06
  • 2208

动态创建Ribbon 按钮

项目因为业务需求需要动态创建 Ribbon 按钮,在网上找了一些代码,如下: void CMainFrame::OnButton2() {     // TODO: 在此添加命令处理程序代码...
  • u010803748
  • u010803748
  • 2016年12月13日 18:22
  • 793

Visual C++ 2012 动态创建Ribbon 按钮若干问题

项目因为业务需求需要动态创建 Ribbon 按钮,在网上找了一些代码,如下: void CMainFrame::OnButton2() {     // TODO: 在此添加命令处理程序代码   ...
  • nanhongfeic
  • nanhongfeic
  • 2015年08月06日 13:37
  • 769

Unity3D-动态实例化按钮的总结

目前,我收集到的动态创建按钮只有2种方式。
  • PooBee
  • PooBee
  • 2014年08月15日 10:05
  • 2054

两种方法使用for循环动态创建按钮(类似九宫格)

比如我需要根据数组中的元素个数创建按钮:     //根据给出的字符串中元素的个数动态创建按钮选项          NSString *strSelect=@"qwertyuiasdfg...
  • j755ing
  • j755ing
  • 2016年04月13日 11:02
  • 3469

duilib 动态创建按钮

最近准备学习新的界面库,感觉MFC开发起来太麻烦。
  • XiaoZuoay
  • XiaoZuoay
  • 2014年11月11日 17:16
  • 3200

MFC动态创建控件(按钮)及添加消息响应

动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。一、创建动态控件:为了对照,我们先来看一下静态控件的创建。 放置静态控件时必须先建立一个容器,一般是对话框,这...
  • ClamReason
  • ClamReason
  • 2015年02月13日 09:57
  • 3354

MFC 动态创建按钮及响应按钮消息

内容大纲 1、CButton类对象的成员方法 2、重视GetBitmap,GetCursor,GetIcon,GetState,DrawItem方法 3、动态添加按钮 4、字符串"ff"在内存中也以f...
  • zlj576045053
  • zlj576045053
  • 2013年10月20日 19:05
  • 856

MFC动态创建按钮及添加消息响应

动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的。 一、创建动态控件: 为了对照,我们先来看一下静态控件的创建。 放置静态控件时必须先建立一个容器,...
  • u011672712
  • u011672712
  • 2016年06月09日 01:05
  • 1386

Unity3D NGUI动态创建按钮

以动态创建服务器列表为例。 public UIAtlas mAtlas; public UIFont mFont; public string mSriteName; pub...
  • asd237241291
  • asd237241291
  • 2013年07月15日 11:26
  • 22225
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态创建按钮
举报原因:
原因补充:

(最多只允许输入30个字)