改变对话框大小和动态添加控件

[改变对话框的大小] 

#define GROUPBOX_STARTID 8000

1 Code:
2 CRect CurrentRect; 
3 GetWindowRect(&CurrentRect)   //  得到当前对话框的大小
4 
5 CurrentRect.bottom += groupbox_rect.Height()+20; 
6 MoveWindow(&CurrentRect,TRUE);   //改变大小,TRUE是改变大小之后刷新 

[动态添加控件]

以GroupBox为例,首先需要new一个CButton,然后调用其Create函数,注意这里的Create中的CRect参数,如果是用其他的控件的位置作为参照值,那么用GetWindowRect()得到该控件的位置之后还需要用ScreenToClient()来转换为空间在对话框内的坐标。

 1 Code:
 2 CButton m_GroupBox[10];   
 3 m_MJPEG_groupbox_ctl.GetWindowRect(&groupbox_rect);  //这是另一个GroupBox的位置 
 4 ScreenToClient(&groupbox_rect);    //这里容易出错 
 5 int h=groupbox_rect.Height(); 
 6 groupbox_rect.bottom += h+20; 
 7 groupbox_rect.top += h+20; 
 8 m_GroupBox[0].Create(_T(""),BS_GROUPBOX|WS_VISIBLE|WS_CHILD,groupbox_rect,this,GROUPBOX_STARTID+0);
 9     
10 m_GroupBox[0].ShowWindow(SW_SHOW); 
11 //在想销毁该控件的地方可以用 
12 m_GroupBox[0].DestroyWindow(); 

CEdit的例子:

定义一个 CPtrArray m_ptr;用于存储创建的CEdit的指针。

 1 #define GROUPBOX_STARTID 8000   
 2 CPtrArray m_ptr;   
 3    
 4 //创建的时候   
 5 CEdit* pEdit=NULL;    
 6 pEdit=new CEdit;    
 7 pEdit->Create(WS_VISIBLE | WS_CHILD|WS_BORDER,CRect(0,0,80,50),this,GROUPBOX_STARTID+0);    
 8     pEdit->ShowWindow(SW_SHOW);   
 9            //添加到m_ptr中   
10 if(pEdit!=NULL)    
11         m_ptr.Add((void*)pEdit);    
12    
13 //销毁的时候   
14 int n=m_ptr.GetSize();    
15 for(int i=0;i<n;i++)    
16 {    
17 CEdit* pEdit=(CEdit*)m_ptr.GetAt(i);    
18 pEdit->DestroyWindow();    
19 delete pEdit;    
20 pEdit=NULL;    
21 }    
22 m_ptr.RemoveAll();    

 

 

转载于:https://www.cnblogs.com/cwbo-win/articles/3401520.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值