OSDN Git Service

Make the keyboard hook local to each thread. Remove the code to
[xkeymacs/xkeymacs.git] / xkeymacs / about.cpp
index 2929c5b..ab68efa 100644 (file)
@@ -1,22 +1,14 @@
 #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
@@ -24,48 +16,26 @@ CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
 \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
@@ -75,8 +45,7 @@ void CAboutDlg::DoDataExchange(CDataExchange *pDX)
        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