[转载]windows mobile获取菜单栏,标题栏,窗口高度

导读:主要是使用GetSystemMetrics函数,一定要注意原作者的解决方案.(对原文进行了排版.)

转载自http://www.cnblogs.com/want/archive/2010/07/28/1787306.html

 

之前也是一头雾水,由于现在的项目要求支持多种分辨率,多个WM版本。对此也查了一些资料,一一验证过,刚刚又凑巧遇到一个帖子http://www.zixundao.com/viewthread.php?tid=1424说是不清楚为什么+3。稍微解释了一下,但又觉得此类问题新手容易浪费时间,故做简单总结:
1.获取屏幕的高宽

g_nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
g_nScreenHeight = GetSystemMetrics(SM_CYSCREEN);

这两个肯定不会有误
2.获取标题栏、菜单栏高度

g_nScreenCaption = GetSystemMetrics(SM_CYCAPTION);
g_nScreenMenu = GetSystemMetrics(SM_CYMENU);

PC下肯定可以的,Mobile下因系统版本,屏幕分辨率各有差异,因此建议大家以后不要用GetSystemMetrics来获取。
测验结果(前面的值为使用GetSystemMetrics获取的):
1):

WM6.5 及更早版本
QVGA:
Menu 23 实际26
Caption 23 实际 26
WVGA:
Menu 23 实际52
Caption 46 实际 52
2)WM6.5.3
WM6.0 及更早版本
QVGA:
Menu 23 实际34
Caption 23 实际 18
WVGA:(今天手边没有这种手机。。)

解决方案:
在MFC程序中(一定要在你使对话框全屏之前)

CDialog::OnInitDialog();
//之后加入
        CRect ,rect;
        GetWindowRect(rect);
        g_nScreenCaption = rect.top;
        g_nScreenMenu = g_nScreenHeight-rect.bottom;

在Win32程序中(前提创建的窗口是非全屏)

case WM_INITDIALOG:
        ...
       SHInitDialog(&shidi);
       RECT rc;
       GetWindowRect(hWnd,&rc);
       g_nScreenCaption = rc.top;
       g_nScreenMenu = g_nScreenHeight-rc.bottom;


欢迎高手斧正。

转载于:https://www.cnblogs.com/zlty/archive/2010/12/10/1901813.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值