SystemParametersInfo (SPI_GETNONCLIENTMETRICS ... 返回false的原因分析
来源:互联网 发布:sql替换字符串 编辑:程序博客网 时间:2024/05/29 12:23
SystemParametersInfo (SPI_GETNONCLIENTMETRICS ... 返回false的原因分析
VC2008下有这么一段代码
看下面NONCLIENTMETRICS的定义
修改如下SystemParametersInfo则返回true:
原因分析:
在SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0);中拷贝内存的大小无论WINVER是什么版本, 都是不包含iPaddedBorderWidth的.
VC2008下有这么一段代码
NONCLIENTMETRICS ncm;ncm.cbSize = sizeof(ncm);VERIFY(SystemParametersInfo (SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0))运行时报错, 原因是SystemParametersInfo返回false引起的.
看下面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 /* WINVER >= 0x0600 */} NONCLIENTMETRICS, *PNONCLIENTMETRICS, FAR* LPNONCLIENTMETRICS;
修改如下SystemParametersInfo则返回true:
NONCLIENTMETRICS ncm;memset(&ncm, 0, sizeof(NONCLIENTMETRICS));#if(WINVER >= 0x0600)ncm.cbSize = sizeof(NONCLIENTMETRICS) - sizeof(ncm.iPaddedBorderWidth);#elsencm.cbSize = sizeof(NONCLIENTMETRICS);#endif /* WINVER >= 0x0600 */VERIFY(SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0));
原因分析:
在SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0);中拷贝内存的大小无论WINVER是什么版本, 都是不包含iPaddedBorderWidth的.
- SystemParametersInfo (SPI_GETNONCLIENTMETRICS ... 返回false的原因分析
- Process32First 返回FALSE的原因
- bindAppWidgetIdIfAllowed 老是返回false的原因
- mysql_query返回false原因
- FormsAuthentication.Authenticate()方法总是返回false的原因
- SystemParametersInfo ( SPI_GETNONCLIENTMETRICS... 在VC 2008 里不能正常工作
- SystemParametersInfo ( SPI_GETNONCLIENTMETRICS... 在VC 2008 里不能正常工作
- SystemParametersInfo ( SPI_GETNONCLIENTMETRICS... 在VC 2008 里不能正常工作
- SystemParametersInfo ( SPI_GETNONCLIENTMETRICS... 在VC 2008 里不能正常工作
- SystemParametersInfo ( SPI_GETNONCLIENTMETRICS... 在VC 2008 里不能正常工作
- SystemParametersInfo (SPI_GETNONCLIENTMETRICS... 在VC 2008 里不能正常工作
- SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 出错。不同系统或者不同版本VS
- 关于Onsubmit方法返回false表单仍然被提交的原因
- List集合中list.remove()返回false原因
- file_get_contents()打开URL无法获得数据返回false原因
- conn.excute()插入数据库成功,但却返回false原因
- Java中打印出来完全相同的两个字符串,用equals方法比较返回的却是false的原因
- sphinx做搜索时如果web服务器和sphinx服务器不是同一台服务器,返回false的原因说明
- 系统常用类NumberFormat
- SIEMENS 用于PC/PG的PROFINET接口——CP 1512
- 加载数据库驱动并取得连接
- 利用JDBC连接取数据并导入到EXCEL中
- 男性保持健康有“三招”
- SystemParametersInfo (SPI_GETNONCLIENTMETRICS ... 返回false的原因分析
- 移动互联网时代:如何用手机精细化管理企业?
- 用C++实现HTTP服务器 - 如何控制一个套接字的发送带宽
- Protocol Buffer数据排列
- IIS7.0 报错 检测到在集成的托管管道模式下不适用的 ASP.NET 设置
- c语言的课堂作业1
- 字符串匹配算法
- Windows共享文件夹权限设置
- AE空间九关系查询