[改变对话框的大小]
#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;iDestroyWindow(); 19 delete pEdit; 20 pEdit=NULL; 21 } 22 m_ptr.RemoveAll();