2011-07-20 74 views
1

可能重複:
How do I read from a version resource in Visual C++C++從.RC獲得版本爲代碼

在我的C++項目我已經添加了rc文件,我可以存儲文件的版本,

可執行的描述,版權等。

並沒問題,我編譯,我去瀏覽器 - >文件屬性,我看到窗體中的所有字段。

我的問題是:如果我需要從項目讀取自己的文件版本(例如顯示爲表單),我該如何做到這一點?

感謝

+0

@volkerk現在不應該是「winapi」嗎? ;) –

回答

3

Windows提供的可執行文件一組API calls for retrieving the version information。以下代碼片段可以幫助您入門。

bool GetVersionInfo(
    LPCTSTR filename, 
    int &major, 
    int &minor, 
    int &build, 
    int &revision) 
{ 
    DWORD verBufferSize; 
    char verBuffer[2048]; 

    // Get the size of the version info block in the file 
    verBufferSize = GetFileVersionInfoSize(filename, NULL); 
    if(verBufferSize > 0 && verBufferSize <= sizeof(verBuffer)) 
    { 
     // get the version block from the file 
     if(TRUE == GetFileVersionInfo(filename, NULL, verBufferSize, verBuffer)) 
     { 
      UINT length; 
      VS_FIXEDFILEINFO *verInfo = NULL; 

      // Query the version information for neutral language 
      if(TRUE == VerQueryValue(
       verBuffer, 
       _T("\\"), 
       reinterpret_cast<LPVOID*>(&verInfo), 
       &length)) 
      { 
       // Pull the version values. 
       major = HIWORD(verInfo->dwProductVersionMS); 
       minor = LOWORD(verInfo->dwProductVersionMS); 
       build = HIWORD(verInfo->dwProductVersionLS); 
       revision = LOWORD(verInfo->dwProductVersionLS); 
       return true; 
      } 
     } 
    } 

    return false; 
}