SystemParametersInfo ( SPI_GETNONCLIENTMETRICS...)在VC 2008 里不能正常工作
2010-07-30 10:23
573 查看
// create fonts
NONCLIENTMETRICS info;
info.cbSize = sizeof(info);
::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(info), &info, 0);
if (!_fontHorzMenu.CreateFontIndirect(&info.lfMenuFont))
return FALSE;
DWORD dw = GetLastError();
上面这段代码在VC 6.0 中工作正常,但是在VC 2008 里 SystemParametersInfo 返回 0,而 GetLastError 返回的却是 0
简单订正如下:
info.cbSize = sizeof(info) - sizeof(info.iPaddedBorderWidth);
实际是由于从 Vista 和 Windows Server 2008 开始 NONCLIENTMETRICS 在最后增加了iPaddedBorderWidth字段,如果你的程序打算同时支持 vista 或 XP ,Windows 2000, Windows Server 2003,那么应该先调用 GetVersionEx 检测Windows版本,然后决定是否需要减去 sizeof (ncms.iPaddedBorderWidth)
参考: http://msdn.microsoft.com/en-us/library/ms724506(VS.85).aspx
转自:http://blog.csdn.net/royer/archive/2008/12/23/3591046.aspx
NONCLIENTMETRICS info;
info.cbSize = sizeof(info);
::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(info), &info, 0);
if (!_fontHorzMenu.CreateFontIndirect(&info.lfMenuFont))
return FALSE;
DWORD dw = GetLastError();
上面这段代码在VC 6.0 中工作正常,但是在VC 2008 里 SystemParametersInfo 返回 0,而 GetLastError 返回的却是 0
简单订正如下:
info.cbSize = sizeof(info) - sizeof(info.iPaddedBorderWidth);
实际是由于从 Vista 和 Windows Server 2008 开始 NONCLIENTMETRICS 在最后增加了iPaddedBorderWidth字段,如果你的程序打算同时支持 vista 或 XP ,Windows 2000, Windows Server 2003,那么应该先调用 GetVersionEx 检测Windows版本,然后决定是否需要减去 sizeof (ncms.iPaddedBorderWidth)
参考: http://msdn.microsoft.com/en-us/library/ms724506(VS.85).aspx
转自:http://blog.csdn.net/royer/archive/2008/12/23/3591046.aspx
相关文章推荐
- 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 在VC6.0正常,在VC 2008 里不能正常工作 的解决办法
- SystemParametersInfo (SPI_GETNONCLIENTMETRICS ... 返回false的原因分析
- SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 出错。不同系统或者不同版本VS
- MFC特定函数的应用20160720(SystemParametersInfo,GetWindowRect,WriteProfileString,GetSystemMetrics)
- GetSystemMetrics与SystemParametersInfo
- SystemParametersInfo GetSystemMetrics
- jQuery 1.4.2 getJSON() 不能正常工作的原因
- 转:VC++获取屏幕大小第一篇 像素大小GetSystemMetrics
- jQuery 1.4.2 getJSON() 不能正常工作的原因
- VC++获取屏幕大小第一篇 像素大小GetSystemMetrics
- SystemParametersInfo 在VS 2008里异常
- VC++获取屏幕大小第一篇 像素大小 GetSystemMetrics
- SystemParametersInfo获取桌面工作区域
- jQuery 1.4.2 getJSON() 不能正常工作的原因
- c++ winform 不能调用获取屏幕分辨率函数GetSystemMetrics的问题