Chinaunix首页 | 论坛 | 博客
  • 博客访问: 230466
  • 博文数量: 55
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 530
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-22 17:59
文章分类

全部博文(55)

文章存档

2015年(2)

2011年(1)

2010年(1)

2009年(18)

2008年(16)

2007年(17)

我的朋友

分类: C/C++

2009-11-12 16:39:23

    当你做完一个项目对产品进行发布时,如果没有在About对话框中及时展现版本最新信息,如果以后对此产品进行维护,可能会带来一定的麻烦。为了消除这种不必要的麻烦,应该在产品发布时更改文件版本号和产品版本号后,在About对话框中及时展现更新后的版本信息,这样以后维护更加方便,而且显得产品比较专业。为了展现版本信息,需要在About对话框中设置两个静态控件:一个是显示版本,一个是显示发布日期。并同时为这两个控件关联两个CString类型成员变量:m_strVer和m_strDate。另外,在CAboutDlg类的构造函数中增加如下代码:
 m_strDate = _T("发布时间:  ");
 m_strDate += __DATE__;
 m_strDate += ", ";
 m_strDate += __TIME__;
 
 // get file version
 TCHAR buf[_MAX_PATH];
 ::GetModuleFileName(theApp.m_hInstance, buf, _MAX_PATH);
 
 DWORD handle;
 DWORD versize = ::GetFileVersionInfoSize(buf, &handle);
 
 CString strVer;
 
 if(versize > 0)
 {
  BYTE *pData = new BYTE[versize];
  ::GetFileVersionInfo(buf, handle, versize, pData);
  _tcscpy(buf, _T("\\"));
  void *pInfo;
  UINT size;
  if(::VerQueryValue(pData, buf, &pInfo, &size))
  {
   VS_FIXEDFILEINFO* pVer = (VS_FIXEDFILEINFO *)pInfo;
   strVer.Format(_T("%d.%d.%d.%d"),
    HIWORD(pVer->dwProductVersionMS),
    LOWORD(pVer->dwProductVersionMS),
    HIWORD(pVer->dwProductVersionLS),
    LOWORD(pVer->dwProductVersionLS));
   m_strVer += strVer;
  }
  delete pData;
 }
这样的话,编译是通不过的,需要一个Version.lib,在Link中设置一下就可以了,同时,文件版本号和产品版本号要同时修改才能生效。
 
 
阅读(851) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~