Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.0 KiB

  1. //////////////////////////////////////////////////////////////////////
  2. //
  3. // AboutDlg.cpp
  4. //
  5. // 1998 Jun, Hiro Yamamoto
  6. //
  7. #include "stdafx.h"
  8. #include "custcon.h"
  9. #include "AboutDlg.h"
  10. #include <malloc.h>
  11. /////////////////////////////////////////////////////////////////////////////
  12. // �A�v���P�[�V�����̃o�[�W���������Ŏg�����Ă��� CAboutDlg �_�C�A���O
  13. CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
  14. {
  15. //{{AFX_DATA_INIT(CAboutDlg)
  16. //}}AFX_DATA_INIT
  17. }
  18. void CAboutDlg::DoDataExchange(CDataExchange* pDX)
  19. {
  20. CDialog::DoDataExchange(pDX);
  21. //{{AFX_DATA_MAP(CAboutDlg)
  22. //}}AFX_DATA_MAP
  23. }
  24. BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
  25. //{{AFX_MSG_MAP(CAboutDlg)
  26. //}}AFX_MSG_MAP
  27. END_MESSAGE_MAP()
  28. struct FullVersion {
  29. public:
  30. DWORD m_ms;
  31. DWORD m_ls;
  32. public:
  33. FullVersion(DWORD ms, DWORD ls) : m_ms(ms), m_ls(ls) { }
  34. };
  35. FullVersion GetVersionInfo()
  36. {
  37. TCHAR path[MAX_PATH+1];
  38. path[::GetModuleFileName(AfxGetInstanceHandle(), path, (sizeof path / sizeof path[0])-1 )] = 0;
  39. DWORD dummy;
  40. DWORD size = GetFileVersionInfoSize(path, &dummy);
  41. ASSERT(size != 0); // 0 means error
  42. LPVOID lpData = malloc(size);
  43. LPVOID lpBuffer = NULL;
  44. UINT vSize;
  45. if (!lpData) {
  46. return FullVersion(0,0);
  47. }
  48. VERIFY( GetFileVersionInfo(path, 0, size, lpData) );
  49. VERIFY( VerQueryValue(lpData, _T("\\"), &lpBuffer, &vSize) );
  50. if (lpBuffer) {
  51. VS_FIXEDFILEINFO* info = (VS_FIXEDFILEINFO*)lpBuffer;
  52. return FullVersion(info->dwProductVersionMS, info->dwProductVersionLS);
  53. } else {
  54. return FullVersion(0, 0);
  55. }
  56. }
  57. BOOL CAboutDlg::OnInitDialog()
  58. {
  59. CDialog::OnInitDialog();
  60. FullVersion version = GetVersionInfo();
  61. CString format;
  62. format.LoadString(IDS_VERSION_TEMPLATE);
  63. CString buf;
  64. buf.Format(format, HIWORD(version.m_ms), LOWORD(version.m_ms), HIWORD(version.m_ls), LOWORD(version.m_ls));
  65. SetDlgItemText(IDC_MAIN_TITLE, buf);
  66. return TRUE;
  67. }