您的位置:首页 > 其它

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

2006-04-29 08:44 411 查看
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: