About.cpp
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:3k
源码类别:

P2P编程

开发平台:

Visual C++

  1. /*
  2.  *  Openmysee
  3.  *
  4.  *  This program is free software; you can redistribute it and/or modify
  5.  *  it under the terms of the GNU General Public License as published by
  6.  *  the Free Software Foundation; either version 2 of the License, or
  7.  *  (at your option) any later version.
  8.  *
  9.  *  This program is distributed in the hope that it will be useful,
  10.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.  *  GNU General Public License for more details.
  13.  *
  14.  *  You should have received a copy of the GNU General Public License
  15.  *  along with this program; if not, write to the Free Software
  16.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17.  *
  18.  */
  19. #include "stdafx.h"
  20. #include ".about.h"
  21. #include "resource.h"
  22. #include "MultiLanguageMgr.h"
  23. #pragma message("automatic link to Version.lib")
  24. #pragma comment(lib, "Version.lib")
  25. extern volatile HINSTANCE g_hInstance;
  26. LRESULT CALLBACK CAbout::_AboutWndProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  27. {
  28. switch (message)
  29. {
  30. case WM_INITDIALOG:
  31. {
  32. //set about dialog title
  33. MultiLanguage LanguageDll;
  34. SetWindowText(hDlg, LanguageDll.GetStringByStr(_T("关于OpenMySee")));
  35. //set about dialog content
  36. HWND hTitle =  GetDlgItem(hDlg, IDC_ABOUTSTR);
  37. if(hTitle != NULL)
  38. {
  39. CString str(LanguageDll.GetStringByStr(_T("OpenMysee 版权所有")));
  40. str += _T("n");
  41. DWORD prgver[2], filever[2];
  42. if(GetPrgVer(g_hInstance, prgver, filever))
  43. {
  44. str += LanguageDll.GetStringByStr(_T("版本:"));
  45. TCHAR buf[10];
  46. if(HIWORD(prgver[1]) == 0)
  47. _stprintf(buf, _T("%d.%d"), (int) (HIWORD(prgver[0])), (int) (LOWORD(prgver[0])));
  48. else
  49. _stprintf(buf, _T("%d.%d.%d"), (int) (HIWORD(prgver[0])), (int) (LOWORD(prgver[0])), 
  50. (int) (HIWORD(prgver[1])));
  51. str += buf;
  52. }
  53. SetWindowText(hTitle, str);
  54. HWND hdesktop = GetDesktopWindow();
  55. if(hdesktop)
  56. {
  57. RECT desktoprect, rect;
  58. GetWindowRect(hdesktop, &desktoprect);
  59. GetWindowRect(hDlg, &rect);
  60. POINT point;
  61. point.x = (desktoprect.right - desktoprect.left)/2 - (rect.right - rect.left)/2;
  62. point.y = (desktoprect.bottom - desktoprect.top)/2 - (rect.bottom - rect.top)/2;
  63. SetWindowPos(hDlg, NULL, point.x, point.y, 0, 0, SWP_NOZORDER | SWP_NOSIZE);
  64. }
  65. }
  66. }
  67. return TRUE;
  68. case WM_COMMAND:
  69. if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) 
  70. {
  71. EndDialog(hDlg, LOWORD(wParam));
  72. return TRUE;
  73. }
  74. break;
  75. }
  76.     return FALSE;
  77. }
  78. CAbout::CAbout()
  79. {
  80. DialogBox(g_hInstance, MAKEINTRESOURCE(IDD_ABOUTBOX), NULL, (DLGPROC)_AboutWndProc);
  81. }
  82. CAbout::~CAbout(void)
  83. {
  84. }
  85. BOOL CAbout::GetPrgVer(HINSTANCE h_module, DWORD prgver[2], DWORD filever[2])
  86. {
  87. TCHAR lpszFileName[MAX_PATH];
  88. if(GetModuleFileName(h_module, lpszFileName, MAX_PATH) == 0)
  89. return FALSE;
  90. DWORD size = GetFileVersionInfoSize(lpszFileName, 0);
  91. BYTE* pBuffer = new BYTE[size];
  92. GetFileVersionInfo(lpszFileName, 0, size, pBuffer);
  93. VS_FIXEDFILEINFO* p_Info = NULL;
  94. UINT length;
  95. VerQueryValue(pBuffer, _T("\"), (LPVOID*) &p_Info, &length);
  96. if(p_Info)
  97. {
  98. prgver[0] = p_Info->dwProductVersionMS;
  99. prgver[1] = p_Info->dwProductVersionLS;
  100. filever[0] = p_Info->dwFileVersionMS;
  101. filever[1] = p_Info->dwFileVersionLS;
  102. delete[] pBuffer;
  103. return TRUE;
  104. }
  105. else
  106. {
  107. delete[] pBuffer;
  108. return FALSE;
  109. }
  110. }