[改变对话框的大小] (转载请注明出处)
#define GROUPBOX_STARTID 8000
- CRect CurrentRect;
- GetWindowRect(&CurrentRect) // 得到当前对话框的大小
- CurrentRect.bottom += groupbox_rect.Height()+20;
- MoveWindow(&CurrentRect,TRUE); //改变大小,TRUE是改变大小之后刷新
[动态添加控件]
以GroupBox为例,首先需要new一个CButton,然后调用其Create函数,注意这里的Create中的CRect参数,如果是用其他的控件的位置作为参照值,那么用GetWindowRect()得到该控件的位置之后还需要用ScreenToClient()来转换为空间在对话框内的坐标。
- CButton m_GroupBox[10];
- m_MJPEG_groupbox_ctl.GetWindowRect(&groupbox_rect); //这是另一个GroupBox的位置
- ScreenToClient(&groupbox_rect); //这里容易出错
- int h=groupbox_rect.Height();
- groupbox_rect.bottom += h+20;
- groupbox_rect.top += h+20;
- m_GroupBox[0].Create(_T(""),BS_GROUPBOX|WS_VISIBLE|WS_CHILD,groupbox_rect,this,GROUPBOX_STARTID+0);
- m_GroupBox[0].ShowWindow(SW_SHOW);
- //在想销毁该控件的地方可以用
- m_GroupBox[0].DestroyWindow();
CEdit的例子:
定义一个 CPtrArray m_ptr;用于存储创建的CEdit的指针。
- #define GROUPBOX_STARTID 8000
- CPtrArray m_ptr;
- //创建的时候
- CEdit* pEdit=NULL;
- pEdit=new CEdit;
- pEdit->Create(WS_VISIBLE | WS_CHILD|WS_BORDER,CRect(0,0,80,50),this,GROUPBOX_STARTID+0);
- pEdit->ShowWindow(SW_SHOW);
- //添加到m_ptr中
- if(pEdit!=NULL)
- m_ptr.Add((void*)pEdit);
- //销毁的时候
- int n=m_ptr.GetSize();
- for(int i=0;i<n;i++)
- {
- CEdit* pEdit=(CEdit*)m_ptr.GetAt(i);
- pEdit->DestroyWindow();
- delete pEdit;
- pEdit=NULL;
- }
- m_ptr.RemoveAll();
CEdit的例子参考自:
http://zhidao.baidu.com/question/87803776.html