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

[改变对话框的大小] 

#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();    

 

 

posted @ 2013-11-01 12:32  陳さん様  阅读(171)  评论(0编辑  收藏  举报