SystemParametersInfo获取信息失败问题的解决
2011-09-12 15:06
615 查看
作者:朱金灿
来源:http://www.cnblogs.com/clever101
使用VS 2008编译下面一段代码:
NONCLIENTMETRICS info;
info.cbSize = sizeof(info);
::SystemParametersInfo (SPI_GETNONCLIENTMETRICS, sizeof(info), &info, 0);
SystemParametersInfo函数总是返回FALSE,上网查了一下,发现是NONCLIENTMETRICS的结构体大小的问题。NONCLIENTMETRICS是这样定义的:
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;
就是在WINVER >= 0x0600成立的时候,info.cbSize = sizeof(info),而XP + sp3的系统的WINVER为0x501。因此解决这个问题的办法是:
要么把WINVER小于0x600 要么直接
NONCLIENTMETRICS.cbSize = sizeof(NONCLIENTMETRICS) - sizeof(NONCLIENTMETRICS.iPaddedBorderWidth); 也可以.
参考文献:
1. SystemParametersInfo SPI_GETNONCLIENTMETRICS 总是返回失败的原因
来源:http://www.cnblogs.com/clever101
使用VS 2008编译下面一段代码:
NONCLIENTMETRICS info;
info.cbSize = sizeof(info);
::SystemParametersInfo (SPI_GETNONCLIENTMETRICS, sizeof(info), &info, 0);
SystemParametersInfo函数总是返回FALSE,上网查了一下,发现是NONCLIENTMETRICS的结构体大小的问题。NONCLIENTMETRICS是这样定义的:
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;
就是在WINVER >= 0x0600成立的时候,info.cbSize = sizeof(info),而XP + sp3的系统的WINVER为0x501。因此解决这个问题的办法是:
要么把WINVER小于0x600 要么直接
NONCLIENTMETRICS.cbSize = sizeof(NONCLIENTMETRICS) - sizeof(NONCLIENTMETRICS.iPaddedBorderWidth); 也可以.
参考文献:
1. SystemParametersInfo SPI_GETNONCLIENTMETRICS 总是返回失败的原因
相关文章推荐
- SystemParametersInfo系统信息获取与设置,慎用
- Eclipse获取android更新信息失败的解决问题(换代理服务器)
- SystemParametersInfo系统信息获取与设置,慎用
- 支持Android7.0 Signature V2 Scheme 多渠道打包,并解决类似360加固后获取不到渠道信息 - 渠道统计失败的问题
- 支持Android Signature V2 Scheme 多渠道打包,并解决类似360加固后获取不到渠道信息 - 渠道统计失败的问题
- 支持Android7.0 Signature V2 Scheme多渠道打包,并解决360加固获取不到渠道信息,渠道统计失败的问题
- SystemParametersInfo调用失败的问题
- SystemParametersInfo调用失败的问题
- SystemParametersInfo调用失败的问题
- 解决 {"ret":100030,"msg":"this api without user authorization"} android QQ第三发登录成功后获取用户信息失败的问题
- SystemParametersInfo调用失败的问题
- 获取系统信息SystemParametersinfo
- Excel导出实例(打开模板,写信息后另存为新excel文件) 在部署时候出问题Windows7 64 bit 下解决:检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败
- vmware中启动网卡提示:正在决定 eth0 的 IP 信息...失败;无链接。检查电缆吗?问题的解决方法
- 解决ext htmleditor 回车,或者居中,设置一下字体颜色,就信息保存失败问题
- 遇到问题---java获取网络文件大小失败getContentLength()为-1 完整解决方法
- 异常详细信息: System.Web.Hosting.HostingEnvironmentException: 访问 IIS 元数据库失败 解决方法
- 解决微信小程序中在其他页面无法使用app.js中获取的userInfo或openid的问题
- Android L 自动获取时区失败问题的解决
- 获取本机地址信息,遇到小问题...有待解决