#include "stdafx.h"\r
#include "about.h"\r
+#include <vector>\r
\r
/////////////////////////////////////////////////////////////////////////////\r
// CAboutDlg dialog used for App About\r
\r
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)\r
{\r
- //{{AFX_DATA_INIT(CAboutDlg)\r
- m_szVersionInformation = _T("");\r
- m_szLegalCopyright = _T("");\r
- //}}AFX_DATA_INIT\r
-\r
- m_szLegalCopyright.Format(_T("Copyright (C) 2001-2006")); // rough\r
-\r
- WORD wMajorVersion = 0;\r
- WORD wMinorVersion = 0;\r
- WORD wBuildVersion = 0;\r
- WORD wRevisionVersion = 0;\r
+ int major, minor, build, revision;\r
+ major = minor = build = revision = 0;\r
\r
TCHAR szFileName[MAX_PATH] = {'\0'};\r
GetModuleFileName(NULL, szFileName, sizeof(szFileName));\r
\r
DWORD dwLen = GetFileVersionInfoSize(szFileName, &dwHandle);\r
if (dwLen) {\r
- LPVOID lpData = new BYTE[dwLen];\r
- if (GetFileVersionInfo(szFileName, dwHandle, dwLen, lpData)) {\r
+ std::vector<BYTE> data(dwLen);\r
+ if (GetFileVersionInfo(szFileName, dwHandle, dwLen, &data[0])) {\r
VS_FIXEDFILEINFO *pInfo;\r
UINT uLen;\r
- if (VerQueryValue(lpData, _T("\\"), (LPVOID *)&pInfo, &uLen)) {\r
- wMajorVersion = (WORD)((pInfo->dwProductVersionMS >> 16) & 0xffff);\r
- wMinorVersion = (WORD)((pInfo->dwProductVersionMS ) & 0xffff);\r
- wBuildVersion = (WORD)((pInfo->dwProductVersionLS >> 16) & 0xffff);\r
- wRevisionVersion = (WORD)((pInfo->dwProductVersionLS ) & 0xffff);\r
- }\r
-\r
- struct Translate {\r
- WORD wLanguage;\r
- WORD wCodePage;\r
- } *lpTranslate = NULL;\r
- UINT cbTranslate = 0;\r
- if (VerQueryValue(lpData, _T("\\VarFileInfo\\Translation"), (LPVOID*)&lpTranslate, &cbTranslate) && sizeof(*lpTranslate) <= cbTranslate) {\r
- LPVOID lpLegalCopyright = NULL;\r
- UINT uLen = 0;\r
- CString SubBlock;\r
-\r
- SubBlock.Format(_T("\\StringFileInfo\\%04x%04x\\LegalCopyright"), lpTranslate->wLanguage, lpTranslate->wCodePage);\r
- if (VerQueryValue(lpData, SubBlock.GetBuffer(SubBlock.GetLength()), (LPVOID *)&lpLegalCopyright, &uLen) && uLen) {\r
- m_szLegalCopyright.Format(_T("%s"), lpLegalCopyright);\r
- }\r
+ if (VerQueryValue(&data[0], _T("\\"), reinterpret_cast<LPVOID *>(&pInfo), &uLen)) {\r
+ major = pInfo->dwProductVersionMS >> 16;\r
+ minor = pInfo->dwProductVersionMS & 0xffff;\r
+ build = pInfo->dwProductVersionLS >> 16;\r
+ revision = pInfo->dwProductVersionLS & 0xffff;\r
}\r
}\r
- delete[] lpData;\r
- lpData = NULL;\r
}\r
-\r
- m_szVersionInformation.Format(_T("%s Version %d.%d"), CString(MAKEINTRESOURCE(AFX_IDS_APP_TITLE)), wMajorVersion, wMinorVersion);\r
-\r
- if (wBuildVersion) {\r
- CString sz;\r
- sz.Format(_T(".%d"), wBuildVersion);\r
- m_szVersionInformation += sz;\r
-\r
- if (wRevisionVersion) {\r
- CString sz;\r
- sz.Format(_T(".%d"), wRevisionVersion);\r
- m_szVersionInformation += sz;\r
+ m_versionInfo.Format(_T("%s Version %d.%d"), CString(MAKEINTRESOURCE(AFX_IDS_APP_TITLE)), major, minor);\r
+ if (build) {\r
+ CString s;\r
+ s.Format(_T(".%d"), build);\r
+ m_versionInfo += s;\r
+ if (revision) {\r
+ s.Format(_T(".%d"), revision);\r
+ m_versionInfo += s;\r
}\r
}\r
}\r
CDialog::DoDataExchange(pDX);\r
//{{AFX_DATA_MAP(CAboutDlg)\r
DDX_Control(pDX, IDC_URL, m_cURL);\r
- DDX_Text(pDX, IDC_VERSION_INFORMATION, m_szVersionInformation);\r
- DDX_Text(pDX, IDC_LEGAL_COPYRIGHT, m_szLegalCopyright);\r
+ DDX_Text(pDX, IDC_VERSION_INFORMATION, m_versionInfo);\r
//}}AFX_DATA_MAP\r
}\r
\r