我晕了。子窗口居中于主窗口怎么计算的?

gmyhbio 2012-02-27 06:21:06
我计算了半天坐标不对- -脑子已经晕了。


RECT rc = {0};
RECT mainRect = {0};
GetWindowRect(&mainRect);

int top,left;
::GetClientRect(newForm,&rc);
left = mainRect.right - (mainRect.right-mainRect.left)/2 + (rc.right-rc.left)/2;
top = mainRect.top - (mainRect.bottom-mainRect.top)/2 + (rc.bottom-rc.top)/2;

::SetWindowPos(newForm,NULL, left, top,0,0,SWP_NOSIZE|SWP_HIDEWINDOW);
...全文
100 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgstudyvc 2012-02-27
  • 打赏
  • 举报
回复
mainRect确保是你的福窗口
left = mainRect.left+(mainRect.width()-rc.width)/2;
gfm688 2012-02-27
  • 打赏
  • 举报
回复
GetWindowRect(newForm, &rc);
left = (mainRect.left+mainRect.right - (rc.right - rc.left)) / 2;
top = (mainRect.top+mainRect.bottom - (rc.bottom - rc.top)) / 2;

如果是用GetClientRect就没算标题栏等非客户区
GetClientRect(newForm, &rc);
left = (mainRect.left+mainRect.right - rc.right) / 2;
top = (mainRect.top+mainRect.bottom - rc.bottom) / 2;
  • 打赏
  • 举报
回复
CenterWindow函数
Eleven 2012-02-27
  • 打赏
  • 举报
回复
GetWindowRect();
ScreenToClient();

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧