博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vc学习之窗口大小发生变更时使控件自动摆放到合适的位置
阅读量:4071 次
发布时间:2019-05-25

本文共 2072 字,大约阅读时间需要 6 分钟。

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);
 }

转载地址:http://xkwni.baihongyu.com/

你可能感兴趣的文章
【泛型】一个简易的对象间转换的工具类(DO转VO)
查看>>
flex编译时,会把trace语句也编译进去
查看>>
Timer的repeatCount和currentCount的区别
查看>>
as3工程和flex工程的区别
查看>>
stage和root的区别
查看>>
转贴关于AsWing和MXML 选项
查看>>
一日打开IE,IE就死掉了,原来是用了第三方开发windows主题皮肤的原因,用windows经典样式解决...
查看>>
svn客户端的用户名密码保存位置
查看>>
替换eclipse中folding的折叠代码的小图标
查看>>
mouseChildren为false后,
查看>>
Eclipse中的文本编辑器使用技巧
查看>>
在 flash.text.TextField 上找不到属性 play,且没有默认值。
查看>>
ANDROID物联网开发
查看>>
安卓开发项目实战我的云音乐
查看>>
ANDROID物联网开发
查看>>
UE4高级运动系统(Advanced Locomotion System V3)插件分析
查看>>
尘封的记忆第2卷:Serekh塞拉赫资源包
查看>>
adb server version (39) doesn't match this client (40); killing...
查看>>
adb server version (39) doesn't match this client (40); killing...
查看>>
Unity高级游戏地编案例
查看>>