如题。实际问题是,我在程序中加了个“Help”窗口,中有个Static Text控件显示版本号,每次都是在属性页面手动更新的。现在想在程序启动时检查当前程序是哪个版本,而此时对话框还没有实例化,这样怎么能读到Static Text控件的值呢?万分感谢。

解决方案 »

  1.   


    // 获取应用版本
    BOOL GetVersion( CString& strFileVer, CString& strProductVer )
    {
    TCHAR szFilePath[_MAX_PATH] = {0};
    DWORD dwSize   = GetModuleFileName(NULL, szFilePath, _MAX_PATH);
    DWORD dwHandle = 0;
    dwSize         = GetFileVersionInfoSize(szFilePath, &dwHandle);
    BYTE* pbVersionInfo = new BYTE[dwSize];
    if (GetFileVersionInfo(szFilePath, dwHandle, dwSize, pbVersionInfo))
    {
    UINT              uLen = 0;
    VS_FIXEDFILEINFO* vsfi = NULL; VerQueryValue(pbVersionInfo, TEXT("\\"), (void**)&vsfi, &uLen);
    strFileVer.Format(_T("%u.%u.%u.%u"), HIWORD(vsfi->dwFileVersionMS), LOWORD(vsfi->dwFileVersionMS),
    HIWORD(vsfi->dwFileVersionLS), LOWORD(vsfi->dwFileVersionLS)); strProductVer.Format(_T("%u.%u.%u.%u"), HIWORD(vsfi->dwProductVersionMS), LOWORD(vsfi->dwProductVersionMS),
    HIWORD(vsfi->dwProductVersionLS), LOWORD(vsfi->dwProductVersionLS)); delete[] pbVersionInfo;
    return TRUE;
    } delete[] pbVersionInfo;
    return FALSE;
    }
    更新版本时,更新资源文件内的Version。
    Dialog初始化时,调用上面的函数获取版本。
      

  2.   

    “有个Static Text控件显示版本号”
    把这个 static 关联为 CString。
    CVersionDlg dlg;
    m_Version= dlg.m_Version;
    不需要 Create 或者 DoModule
      

  3.   


    赞一个,测试成功;
    注意的是,连接依赖项要加人Version.lib
      

  4.   


    不成啊,得到的值是空的。
    你当前的exe有加入Version资源吗?Resource View中看看