在Windows Mobile和Wince(Windows Embedded CE)下进行Native C++开发,如何取出资源文件中的版本信息
在Windows Mobile和Wince(Windows Embedded CE)下开发的产品,有时候需要显示当前产品的版本信息。一般来说,版本信息是保存在资源文件里面的,例如下图:
为了保持一致,所有版本信息应该都从资源文件读取,不应该另外硬编码(Hard code)。
下面讲述读取资源文件版本信息的方法:
1.在资源文件中新建一个版本信息项
2.根据需求修改版本信息
3.增加取版本信息函数
CString CConfigDialog::GetVersionInfo(HMODULE hLib)
{
CString version;
TCHAR appFilePath[MAX_PATH];
memset(appFilePath, 0, sizeof(char) * MAX_PATH);
if (GetModuleFileName(hLib, appFilePath, MAX_PATH))
{
DWORD hand = 0;
DWORD verLen = GetFileVersionInfoSize(appFilePath,&hand);
if (0 < verLen)
{
TCHAR *verData = (TCHAR *)malloc(verLen);
if (verData)
{
if (GetFileVersionInfoW(appFilePath,hand,verLen,verData))
{
VS_FIXEDFILEINFO *verInfo;
unsigned bufLen;
if (VerQueryValueW(verData,_T("\\"),(LPVOID *)&verInfo,(PUINT)&bufLen))
{
TCHAR numbTxt[8];
memset(numbTxt,0,8);
// major
_itow(HIWORD(verInfo->dwFileVersionMS),numbTxt,10);
version = numbTxt;
version += _T(".");
// minor
_itow(LOWORD(verInfo->dwFileVersionMS),numbTxt,10);
version += numbTxt;
version += _T(".");
// build
_itow(HIWORD(verInfo->dwFileVersionLS),numbTxt,10);
version += numbTxt;
version += _T(".");
// revision
_itow(LOWORD(verInfo->dwFileVersionLS),numbTxt,10);
version += numbTxt;
}
}
free(verData);
}
}
}
return version;
}
4.取出版本信息
HINSTANCE hInst = (HINSTANCE)hModule;
GetVersionInfo(hInst);
完成了,效果如下图:
最近一直做WTL的开发,写了不少这方面的总结,请看我的blog。
作者:Jake Lin(Jake's Blog on 博客园)
出处:http://procoder.cnblogs.com
本作品由Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言。
出处:http://procoder.cnblogs.com
本作品由Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言。