OSDN Git Service

change EOL style to CRLF to adjust to default setting of Visual Studio
[yamy/yamy.git] / dlgversion.cpp
1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\r
2 // dlgversion.cpp\r
3 \r
4 \r
5 #include "misc.h"\r
6 \r
7 #include "mayu.h"\r
8 #include "mayurc.h"\r
9 #include "windowstool.h"\r
10 #include "compiler_specific_func.h"\r
11 #include "layoutmanager.h"\r
12 \r
13 #include <cstdio>\r
14 #include <windowsx.h>\r
15 \r
16 \r
17 ///\r
18 class DlgVersion : public LayoutManager\r
19 {\r
20   HWND m_hwnd;          ///\r
21   \r
22 public:\r
23   ///\r
24   DlgVersion(HWND i_hwnd)\r
25     : LayoutManager(i_hwnd),\r
26       m_hwnd(i_hwnd)\r
27   {\r
28   }\r
29   \r
30   /// WM_INITDIALOG\r
31   BOOL wmInitDialog(HWND /* i_focus */, LPARAM i_lParam)\r
32   {\r
33     TCHAR *mayudVersion = (TCHAR*)i_lParam;\r
34     setSmallIcon(m_hwnd, IDI_ICON_mayu);\r
35     setBigIcon(m_hwnd, IDI_ICON_mayu);\r
36     \r
37     _TCHAR modulebuf[1024];\r
38     CHECK_TRUE( GetModuleFileName(g_hInst, modulebuf,\r
39                                   NUMBER_OF(modulebuf)) );\r
40     \r
41     _TCHAR buf[1024];\r
42     _sntprintf(buf, NUMBER_OF(buf), loadString(IDS_version).c_str(),\r
43                _T(VERSION)\r
44 #ifndef NDEBUG\r
45                _T(" (DEBUG)")\r
46 #endif // !NDEBUG\r
47 #ifdef _UNICODE\r
48                _T(" (UNICODE)")\r
49 #endif // !_UNICODE\r
50                ,\r
51                loadString(IDS_homepage).c_str(),\r
52                (_T(LOGNAME) _T("@") + toLower(_T(COMPUTERNAME))).c_str(),\r
53                _T(__DATE__) _T(" ") _T(__TIME__),\r
54                getCompilerVersionString().c_str(),\r
55                modulebuf);\r
56     \r
57     \r
58     Edit_SetText(GetDlgItem(m_hwnd, IDC_EDIT_builtBy), buf);\r
59     \r
60     // set layout manager\r
61     typedef LayoutManager LM;\r
62 \r
63     addItem(GetDlgItem(m_hwnd, IDC_STATIC_mayuIcon),\r
64             LM::ORIGIN_LEFT_EDGE, LM::ORIGIN_TOP_EDGE,\r
65             LM::ORIGIN_LEFT_EDGE, LM::ORIGIN_TOP_EDGE);\r
66     addItem(GetDlgItem(m_hwnd, IDC_EDIT_builtBy),\r
67             LM::ORIGIN_LEFT_EDGE, LM::ORIGIN_TOP_EDGE,\r
68             LM::ORIGIN_RIGHT_EDGE, LM::ORIGIN_BOTTOM_EDGE);\r
69     addItem(GetDlgItem(m_hwnd, IDC_BUTTON_download),\r
70             LM::ORIGIN_CENTER, LM::ORIGIN_BOTTOM_EDGE,\r
71             LM::ORIGIN_CENTER, LM::ORIGIN_BOTTOM_EDGE);\r
72     addItem(GetDlgItem(m_hwnd, IDOK),\r
73             LM::ORIGIN_CENTER, LM::ORIGIN_BOTTOM_EDGE,\r
74             LM::ORIGIN_CENTER, LM::ORIGIN_BOTTOM_EDGE);\r
75     restrictSmallestSize();\r
76     \r
77     return TRUE;\r
78   }\r
79   \r
80   /// WM_CLOSE\r
81   BOOL wmClose()\r
82   {\r
83     CHECK_TRUE( EndDialog(m_hwnd, 0) );\r
84     return TRUE;\r
85   }\r
86 \r
87   /// WM_COMMAND\r
88   BOOL wmCommand(int /* i_notifyCode */, int i_id, HWND /* i_hwndControl */)\r
89   {\r
90     switch (i_id)\r
91     {\r
92       case IDOK:\r
93       {\r
94         CHECK_TRUE( EndDialog(m_hwnd, 0) );\r
95         return TRUE;\r
96       }\r
97       case IDC_BUTTON_download:\r
98       {\r
99         ShellExecute(NULL, NULL, loadString(IDS_homepage).c_str(),\r
100                      NULL, NULL, SW_SHOWNORMAL);\r
101         CHECK_TRUE( EndDialog(m_hwnd, 0) );\r
102         return TRUE;\r
103       }\r
104     }\r
105     return FALSE;\r
106   }\r
107 };\r
108 \r
109 \r
110 //\r
111 #ifdef MAYU64\r
112 INT_PTR CALLBACK dlgVersion_dlgProc(\r
113 #else\r
114 BOOL CALLBACK dlgVersion_dlgProc(\r
115 #endif\r
116   HWND i_hwnd, UINT i_message, WPARAM i_wParam, LPARAM i_lParam)\r
117 {\r
118   DlgVersion *wc;\r
119   getUserData(i_hwnd, &wc);\r
120   if (!wc)\r
121     switch (i_message)\r
122     {\r
123       case WM_INITDIALOG:\r
124         wc = setUserData(i_hwnd, new DlgVersion(i_hwnd));\r
125         return wc->wmInitDialog(reinterpret_cast<HWND>(i_wParam), i_lParam);\r
126     }\r
127   else\r
128     switch (i_message)\r
129     {\r
130       case WM_COMMAND:\r
131         return wc->wmCommand(HIWORD(i_wParam), LOWORD(i_wParam),\r
132                              reinterpret_cast<HWND>(i_lParam));\r
133       case WM_CLOSE:\r
134         return wc->wmClose();\r
135       case WM_NCDESTROY:\r
136         delete wc;\r
137         return TRUE;\r
138       default:\r
139         return wc->defaultWMHandler(i_message, i_wParam, i_lParam);\r
140     }\r
141   return FALSE;\r
142 }\r