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

[改变对话框的大小]  (转载请注明出处)

#define GROUPBOX_STARTID 8000

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

[动态添加控件]

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

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

CEdit的例子:

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

Code:
  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();   

CEdit的例子参考自:

http://zhidao.baidu.com/question/87803776.html

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值