|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
此内容仅用于方便客户区布局
CreateWindow函数参数设置的大小为窗口宽度 包括客户区与非客户区
当窗口大小减去非客户区所占区域的结果不为偶数倍时 为了方便布局以及画面对称美观 应重设客户区大小
可用 MoveWindow和SetWindowPos两个函数重设窗口大小
void ChangeWinRect(HWND hwnd){
RECT WinRect,ClientRect;
int iHighGap,iWidthGap;
GetWindowRect(hwnd,&WinRect);
GetClientRect(hwnd,&ClientRect);
iHighGap = (WinRect.bottom - WinRect.top) - (ClientRect.bottom - ClientRect.top);
iWidthGap = (WinRect.right - WinRect.left) - (ClientRect.right - ClientRect.left);
ClientRect.right += (iWidthGap * 2);
ClientRect.bottom += (iHighGap * 2);
MoveWindow(hwnd,WinRect.left,WinRect.top,
ClientRect.right,ClientRect.bottom,FALSE);
}
以此为例
重设时应注意函数参数也是设置窗口大小 并非客户区大小
故ClientRect.right和ClientRect.bottom应加上非客户区大小的两倍
或直接以 WinRect.right + iWidthGap和WInRect.buttom + iHighGap作为设置窗口大小的参数
否则窗口将保持原型或达不到预期结果
为避免使用时程序时不必要的误解
此函数应放在CreateWindow所发出的消息内执行 个人认为放在WM_CREATE消息内较好
|
|