vc学习之窗口大小发生变更时使控件自动摆放到合适的位置

来源:互联网 发布:淘宝开充话费有利润 编辑:程序博客网 时间:2024/04/29 08:11

1、不用说,首先隐射OnSize事件,然后在该事件中编写代码

2、这里要注意一个问题,那就是当窗口首次打开的时候,窗口上的空间事实上还没有创建,这个时候如果尝试移动控件位置将会出现错误,最常用的办法是使用GetSafeHwnd来判断控件窗口句柄是否存在,如果不存在就表示还没有创建,而且在窗口打开的时候只要判断一个就可以了

3、使用CRect 来处理控件的大小位置

 

我的代码处理:

// TODO: Add your message handler code here
 CRect rectClient;
 CRect rectEdit;
 int iButtonWidth,iButtonHeight;
 
 //光判断信息窗口是否已经创建
 if (IsWindow(GetDlgItem(IDC_EDIT_INFO)->GetSafeHwnd()))
 {  
  GetClientRect(&rectClient);
 
  //设置 启动按钮
  GetDlgItem(IDC_BUTTON_START)->GetClientRect(&rectEdit);
  iButtonWidth = rectEdit.Width();
  iButtonHeight = rectEdit.Height();
  rectEdit.top = rectClient.bottom - 10 - rectEdit.Height();
  rectEdit.bottom = rectClient.bottom - 10;
  rectEdit.right = 10 + rectEdit.Width();
  rectEdit.left = 10;
  GetDlgItem(IDC_BUTTON_START)->MoveWindow(rectEdit,TRUE);
  //设置 停止按钮
  rectEdit.left = rectEdit.right + 10;
  rectEdit.right = rectEdit.right + rectEdit.right;
  GetDlgItem(IDC_BUTTON_STOP)->MoveWindow(rectEdit,TRUE);
  //设置 清除日志
  rectEdit.left = rectEdit.right + 10;
  rectEdit.right = rectEdit.right + iButtonWidth;
  GetDlgItem(IDC_BUTTON_CLEAR_INFO)->MoveWindow(rectEdit,TRUE);
  //设置取消 右边重新计算
  rectEdit.left = rectClient.right - 10 - iButtonWidth;
  rectEdit.right = rectClient.right - 10;
  GetDlgItem(IDCANCEL)->MoveWindow(rectEdit,TRUE);
  //设置 设置按钮
  rectEdit.left = rectClient.right - 10 - iButtonWidth - iButtonWidth - 50;
  rectEdit.right = rectEdit.left + iButtonWidth;
  GetDlgItem(IDC_BUTTON_GATEWAY_SETUP)->MoveWindow(rectEdit,TRUE);
  
  //设置信息窗口
  GetDlgItem(IDC_EDIT_INFO)->GetClientRect(&rectEdit);
  rectEdit.left = 10;
  rectEdit.right = rectClient.right - 10;
  rectEdit.top = 10;
  rectEdit.bottom = rectClient.bottom - 10 - iButtonHeight - 10;
  GetDlgItem(IDC_EDIT_INFO)->MoveWindow(rectEdit,TRUE);
  
  //设置发送测试信息
  GetDlgItem(IDC_BUTTON_SEND_TEST)->GetClientRect(&rectEdit);
  iButtonWidth = rectEdit.Width();
  iButtonHeight = rectEdit.Height();
  rectEdit.left = (rectClient.Width() - iButtonWidth ) / 2;
  rectEdit.right = rectEdit.left + iButtonWidth;
  rectEdit.bottom = rectClient.bottom - 10;
  rectEdit.top = rectEdit.bottom - iButtonHeight;
  GetDlgItem(IDC_BUTTON_SEND_TEST)->MoveWindow(rectEdit,TRUE);
 }

原创粉丝点击