高分辨率下,界面控件错位,请大侠指教。

believe_me 2012-07-23 10:28:02
我用的开发环境为WIN-XP,vs2008,用MFC做的界面,界面大小为固定不变,字体设定为宋体(9)。
但是高分1600*900的机器上跑的时候,界面出现错位情况,大部分控件都不在设定的位置,有的控件被拉长,而且设定的字体也变大了.
以下为界面初始化函数OnInitDialog中的代码:

CRect rc;
GetClientRect(&rc);
SetWindowText("窗口");
//Border属性设置为None,自己绘制标题和客户区。
//m_pPngTitle为窗口的标题背景(分辨率318 * 30),m_pPngBody为窗口的客户区背景(分辨率318*215)。
rc.right = rc.left + m_pPngTitle->GetWidth();
rc.bottom = rc.top + m_pPngTitle->GetHeight() + m_pPngBody->GetHeight();

MoveWindow(&rc);
CenterWindow(this);
//窗口置顶
SetWindowPos(&CWnd::wndTopMost,0, 0, 0, 0,SWP_NOMOVE|SWP_NOSIZE);
CRgn rgn;
rgn.CreateRoundRectRgn(1,
1,
rc.right,
rc.bottom,
5,
5);
this->SetWindowRgn((HRGN)rgn.m_hObject, TRUE);
rgn.DeleteObject();

InitControls();

InitControls函数的实现代码:

CRect rc;
CRect rcAccount(75, 120, 159, 22);
//用户名输入label
m_labelUser.MoveWindow(15, 125, 50, 22);
//密码输入label
m_labelPsw.MoveWindow(15, 155, 50, 22);
m_cmbAccount.MoveWindow(&rcAccount);
//取客户区大小
GetClientRect(&rc);
m_editPsw.MoveWindow(73, 150, 159, 22);
//...

请指教,这样的做界面初始化在高分辨率下出现错位问题,可能是什么原因。
谢谢大虾了,感激涕零。
...全文
413 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengge8ylf 2012-07-27
  • 打赏
  • 举报
回复
先取客户端CRect 然后再定位控件
schlafenhamster 2012-07-27
  • 打赏
  • 举报
回复
GetDialogBaseUnits
所以用下列公式来把对话框模板单位转换为像素
PiselX=(temptateunitX★baseunitX)/4;PiseIY=(templateunitY★baseunitY)/8
believe_me 2012-07-27
  • 打赏
  • 举报
回复
正常的图片:

错位的图片:
lslsyqyq 2012-07-26
  • 打赏
  • 举报
回复
这错位也太夸张了吧
schlafenhamster 2012-07-26
  • 打赏
  • 举报
回复
连接无法显示。
believe_me 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

对话框的大小与字体有关。
用GetClientRect(&rc);
不能反映字体大小。
[/Quote]
我的窗口在非高分的屏幕下,是可以正常显示的。
believe_me 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

可以看看这个帖子
http://topic.csdn.net/u/20120714/17/f95794ae-8a1a-49ba-a054-63d247b8655e.html
[/Quote]
我的窗口类中没有响应OnSize消息,这个应该不会有影响吧
schlafenhamster 2012-07-23
  • 打赏
  • 举报
回复
对话框的大小与字体有关。
用GetClientRect(&rc);
不能反映字体大小。
Ginie 2012-07-23
  • 打赏
  • 举报
回复
足球中国 2012-07-23
  • 打赏
  • 举报
回复
字体大小与分辨率有关系。控件的大小也会根据字的大小而变化。
believe_me 2012-07-23
  • 打赏
  • 举报
回复

15,979

社区成员

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

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