SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 出错。不同系统或者不同版本VS

最新看到的是百度上的解答:

http://hi.baidu.com/vc_net/item/b8c5f761f70b9290c4d2494b
另外MSDN的介绍

   
   
typedef struct tagNONCLIENTMETRICS { UINT cbSize; int iBorderWidth; int iScrollWidth; int iScrollHeight; int iCaptionWidth; int iCaptionHeight; LOGFONT lfCaptionFont; int iSmCaptionWidth; int iSmCaptionHeight; LOGFONT lfSmCaptionFont; int iMenuWidth; int iMenuHeight; LOGFONT lfMenuFont; LOGFONT lfStatusFont; LOGFONT lfMessageFont; #if (WINVER >= 0x0600) int iPaddedBorderWidth; #endif } NONCLIENTMETRICS, * LPNONCLIENTMETRICS;


应该这个样子:
C/C++ code
   
   
nm.cbSize = sizeof (NONCLIENTMETRICS) - sizeof (nm.iPaddedBorderWidth);
// 这个是高版本.通常所说的VISTA版本 WINVEE >= 0x0600 nm.cbSize = sizeof (NONCLIENTMETRICS) ; // 这个是低版本,通常所说的0x0501


或者在stdafx.h加入

#define WINVER 0x0501 // 关键:将此值更改为相应的值,以适用于 Windows 的其他版本。
#define _WIN32_WINNT 0x0600 // 响应鼠标滚轮需要
#define _WIN32_IE 0x0600 /*IE 6.0*/


 

所以在C/C++中使用过程具体如下:

	NONCLIENTMETRICS nm;
	nm.cbSize = sizeof (NONCLIENTMETRICS);
	// Vista版本要减去  sizeof(nm.iPaddedBorderWidth);
	VERIFY (SystemParametersInfo (SPI_GETNONCLIENTMETRICS,nm.cbSize,&nm,0)); 



 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值