OSDN Git Service

use boost_1_56_0 and build by VS2013
[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         /// WM_INITDIALOG\r
30         BOOL wmInitDialog(HWND /* i_focus */, LPARAM i_lParam) {\r
31                 TCHAR *mayudVersion = (TCHAR*)i_lParam;\r
32                 setSmallIcon(m_hwnd, IDI_ICON_mayu);\r
33                 setBigIcon(m_hwnd, IDI_ICON_mayu);\r
34 \r
35                 _TCHAR modulebuf[1024];\r
36                 CHECK_TRUE( GetModuleFileName(g_hInst, modulebuf,\r
37                                                                           NUMBER_OF(modulebuf)) );\r
38 \r
39                 _TCHAR buf[1024];\r
40                 _sntprintf(buf, NUMBER_OF(buf), loadString(IDS_version).c_str(),\r
41                                    _T(VERSION)\r
42 #ifndef NDEBUG\r
43                                    _T(" (DEBUG)")\r
44 #endif // !NDEBUG\r
45 #ifdef _UNICODE\r
46                                    _T(" (UNICODE)")\r
47 #endif // !_UNICODE\r
48                                    ,\r
49                                    loadString(IDS_homepage).c_str(),\r
50                                    (_T(LOGNAME) _T("@") + toLower(_T(COMPUTERNAME))).c_str(),\r
51                                    _T(__DATE__) _T(" ") _T(__TIME__),\r
52                                    getCompilerVersionString().c_str(),\r
53                                    modulebuf);\r
54 \r
55 \r
56                 Edit_SetText(GetDlgItem(m_hwnd, IDC_EDIT_builtBy), buf);\r
57 \r
58                 // set layout manager\r
59                 typedef LayoutManager LM;\r
60 \r
61                 addItem(GetDlgItem(m_hwnd, IDC_STATIC_mayuIcon),\r
62                                 LM::ORIGIN_LEFT_EDGE, LM::ORIGIN_TOP_EDGE,\r
63                                 LM::ORIGIN_LEFT_EDGE, LM::ORIGIN_TOP_EDGE);\r
64                 addItem(GetDlgItem(m_hwnd, IDC_EDIT_builtBy),\r
65                                 LM::ORIGIN_LEFT_EDGE, LM::ORIGIN_TOP_EDGE,\r
66                                 LM::ORIGIN_RIGHT_EDGE, LM::ORIGIN_BOTTOM_EDGE);\r
67                 addItem(GetDlgItem(m_hwnd, IDC_BUTTON_download),\r
68                                 LM::ORIGIN_CENTER, LM::ORIGIN_BOTTOM_EDGE,\r
69                                 LM::ORIGIN_CENTER, LM::ORIGIN_BOTTOM_EDGE);\r
70                 addItem(GetDlgItem(m_hwnd, IDOK),\r
71                                 LM::ORIGIN_CENTER, LM::ORIGIN_BOTTOM_EDGE,\r
72                                 LM::ORIGIN_CENTER, LM::ORIGIN_BOTTOM_EDGE);\r
73                 restrictSmallestSize();\r
74 \r
75                 return TRUE;\r
76         }\r
77 \r
78         /// WM_CLOSE\r
79         BOOL wmClose() {\r
80                 CHECK_TRUE( EndDialog(m_hwnd, 0) );\r
81                 return TRUE;\r
82         }\r
83 \r
84         /// WM_COMMAND\r
85         BOOL wmCommand(int /* i_notifyCode */, int i_id, HWND /* i_hwndControl */) {\r
86                 switch (i_id) {\r
87                 case IDOK: {\r
88                         CHECK_TRUE( EndDialog(m_hwnd, 0) );\r
89                         return TRUE;\r
90                 }\r
91                 case IDC_BUTTON_download: {\r
92                         ShellExecute(NULL, NULL, loadString(IDS_homepage).c_str(),\r
93                                                  NULL, NULL, SW_SHOWNORMAL);\r
94                         CHECK_TRUE( EndDialog(m_hwnd, 0) );\r
95                         return TRUE;\r
96                 }\r
97                 }\r
98                 return FALSE;\r
99         }\r
100 };\r
101 \r
102 \r
103 //\r
104 #ifdef MAYU64\r
105 INT_PTR CALLBACK dlgVersion_dlgProc(\r
106 #else\r
107 BOOL CALLBACK dlgVersion_dlgProc(\r
108 #endif\r
109         HWND i_hwnd, UINT i_message, WPARAM i_wParam, LPARAM i_lParam)\r
110 {\r
111         DlgVersion *wc;\r
112         getUserData(i_hwnd, &wc);\r
113         if (!wc)\r
114                 switch (i_message) {\r
115                 case WM_INITDIALOG:\r
116                         wc = setUserData(i_hwnd, new DlgVersion(i_hwnd));\r
117                         return wc->wmInitDialog(reinterpret_cast<HWND>(i_wParam), i_lParam);\r
118                 }\r
119         else\r
120                 switch (i_message) {\r
121                 case WM_COMMAND:\r
122                         return wc->wmCommand(HIWORD(i_wParam), LOWORD(i_wParam),\r
123                                                                  reinterpret_cast<HWND>(i_lParam));\r
124                 case WM_CLOSE:\r
125                         return wc->wmClose();\r
126                 case WM_NCDESTROY:\r
127                         delete wc;\r
128                         return TRUE;\r
129                 default:\r
130                         return wc->defaultWMHandler(i_message, i_wParam, i_lParam);\r
131                 }\r
132         return FALSE;\r
133 }\r