常用控件的动态创建

所谓动态创建是相对于静态创建而言的

我这里的静态创建指的在资源视图中往对话框上拖拽的方法添加控件的方法

而动态创建即不通过拖拽的方法创建控件的方法

1.静态控件的动态创建

首先在主对话框中添加一个CStatic成员

 

1 class CDlgDlg : public CDialogEx
2 {
3     //省略
4     CStatic m_Static;
5     //省略
6 };

添加一个按钮,在该按钮的消息响应函数中动态创建一个静态控件

1 void CDlgDlg::OnBnClickedBtn1()
2 {
3     m_Static.Create(_T("动态创建的CStatic控件:"),WS_CHILD|WS_VISIBLE|SS_CENTER,
4         CRect(10,10,200,50),this);
5 }

编译运行后的效果:

 

2.图片控件的动态创建

在主对话框类中添加一个CStatic类型的成员和一个CBitmap类型的成员

 

1 class CDlgDlg : public CDialogEx
2 {
3     //省略
4     CStatic m_Static;
5     CBitmap m_Bitmap;
6     //省略
7 };

然后在主对话框上添加一个按钮,在该按钮的单击事件处理程序中动态创建一个图片控件

 1 void CDlgDlg::OnBnClickedBtn1()
 2 {
 3     CRect rect;
 4     
 5     GetClientRect(&rect);
 6     
 7     m_Static.Create(_T(""),WS_CHILD|WS_VISIBLE|SS_CENTERIMAGE|SS_BITMAP,
 8         rect,this);
 9 
10     if (m_Static.GetBitmap() == NULL)
11     {
12         m_Bitmap.LoadBitmap(IDB_BITMAP1);
13         m_Static.SetBitmap((HBITMAP)m_Bitmap.GetSafeHandle());
14     }
15 }

编译运行后的效果图:

3.编辑框控件的动态创建

首先在主对话框类中添加一个CEdit类型的成员

 

1 class CDlgDlg : public CDialogEx
2 {
3         //省略
4     CEdit m_Edit;
5         //省略
6 };

 

接着在主对话框上面添加一个按钮,接着在该按钮的单击事件响应函数中动态创建一个编辑框控件

 

1 void CDlgDlg::OnBnClickedBtn1()
2 {    
3     m_Edit.Create(ES_MULTILINE|ES_WANTRETURN|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER,
4         CRect(10,10,100,100),this,1);
5 }

 

编译运行后的效果如下:

 

4.按钮控件的动态创建

按钮的种类有多种,常见的有普通按钮,单选按钮,复选按钮

首先我们在主对话框类中添加3个CButton类型的成员

 

1 class CDlgDlg : public CDialogEx
2 {
3     CButton m_Btn1;
4     CButton m_Btn2;
5     CButton m_Btn3;
6 };

 

然后在主对话框上添加3个按钮,分别在这3个按钮的单击事件处理函数中动态创建普通按钮控件,单选按钮控件,复选按钮控件

 1 void CDlgDlg::OnBnClickedBtn1()
 2 {    
 3     m_Btn1.Create(_T("普通按钮"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
 4         CRect(10,10,100,30),this,1);
 5 }
 6 
 7 
 8 void CDlgDlg::OnBnClickedBtn2()
 9 {
10     m_Btn2.Create(_T("单选按钮"),WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,
11         CRect(10,100,100,130),this,2);
12 }
13 
14 
15 void CDlgDlg::OnBnClickedBtn3()
16 {
17     m_Btn3.Create(_T("复选按钮"),WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX,
18         CRect(10,40,100,70),this,3);
19 }

编译运行后的效果如下:

 

5.列表框控件的动态创建

首先在主对话框类中添加一个CListBox类型的成员

 

1 class CDynamicDlg : public CDialogEx
2 {
3     //省略
4     CListBox m_ListBox;
5     //省略
6 };

 

接着在主对话框上添加一个按钮,在该按钮的单击事件响应函数中动态创建一个列表框控件

1 void CDynamicDlg::OnBnClickedBtn1()
2 {
3     m_ListBox.Create(WS_CHILD|WS_VISIBLE|LBS_STANDARD|WS_HSCROLL,
4         CRect(10,10,200,200),this,1);
5 
6     m_ListBox.AddString(_T("蛮王"));
7     m_ListBox.AddString(_T("刀妹"));
8     m_ListBox.AddString(_T("火男"));
9 }

编译运行后的效果:

 

6.组合框控件的动态创建

首先在主对话框类中添加一个CComboBox类型的成员

 

1 class CDynamicDlg : public CDialogEx
2 {
3     //省略 
4     CComboBox m_ComboBox;
5     //省略
6 };

 

接着在主对话框上添加一个按钮,在该按钮的单击事件响应函数中动态创建一个组合框控件

 

1 void CDynamicDlg::OnBnClickedBtn1()
2 {
3     m_ComboBox.Create(WS_CHILD|WS_VISIBLE|WS_VSCROLL|CBS_DROPDOWNLIST,
4         CRect(10,10,200,100),this,1);
5     m_ComboBox.AddString(_T("蛮王"));
6     m_ComboBox.AddString(_T("刀妹"));
7     m_ComboBox.AddString(_T("提莫"));
8 }

 

编译运行后的效果:

 

7.滚动条控件的动态创建

首先在主对话框类中添加一个CScrollBar类型的成员

 

1 class CDynamicDlg : public CDialogEx
2 {
3     //省略 
4     CScrollBar m_ScrollBar;
5     //省略
6 };

 

接着在主对话框上面添加一个按钮,在该按钮的单击事件响应函数中动态创建一个滚动条控件

1 void CDynamicDlg::OnBnClickedBtn1()
2 {
3     m_ScrollBar.Create(SBS_HORZ|SBS_TOPALIGN|WS_CHILD|WS_VISIBLE,
4         CRect(5,5,100,30),this,100);
5 }

编译运行后的效果如下:

其他控件的动态创建方法方式,具体请参考MSDN

 

转载于:https://www.cnblogs.com/DebugBin/p/4363167.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值