OSDN Git Service

Improve log speed.
[tortoisegit/TortoiseGitJp.git] / src / crashrpt / MainDlg.cpp
1 #include "StdAfx.h"\r
2 \r
3 #include "MainDlg.h"\r
4 #include "resource.h"\r
5 \r
6 CMainDlg::CMainDlg(void)\r
7 {\r
8 }\r
9 \r
10 CMainDlg::~CMainDlg(void)\r
11 {\r
12 }\r
13 \r
14 LRESULT CMainDlg::DlgFunc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)\r
15 {\r
16         switch (uMsg)\r
17         {\r
18         case WM_INITDIALOG:\r
19                 {\r
20                         InitDialog(hwndDlg, IDR_MAINFRAME);\r
21                         //\r
22                         // Set title using app name\r
23                         //\r
24                         ::SetWindowText(*this, CUtility::getAppName().c_str());\r
25                         // Hide 'Send' button if required. Position 'Send' and 'Save'.\r
26                         //\r
27                         HWND okButton = ::GetDlgItem(*this, IDOK);\r
28                         HWND saveButton = ::GetDlgItem(*this, IDC_SAVE);\r
29                         if (m_sendButton) \r
30                         {\r
31                                 // Line up Save, Send [OK] and Exit [Cancel] all in a row\r
32                                 HWND cancelButton = ::GetDlgItem(*this, IDCANCEL);\r
33                                 WINDOWPLACEMENT okPlace;\r
34                                 WINDOWPLACEMENT savePlace;\r
35                                 WINDOWPLACEMENT cancelPlace;\r
36 \r
37                                 ::GetWindowPlacement(okButton, &okPlace);\r
38                                 ::GetWindowPlacement(saveButton, &savePlace);\r
39                                 ::GetWindowPlacement(cancelButton, &cancelPlace);\r
40 \r
41                                 savePlace.rcNormalPosition.left =\r
42                                         okPlace.rcNormalPosition.left -\r
43                                         (savePlace.rcNormalPosition.right - savePlace.rcNormalPosition.left) +\r
44                                         (okPlace.rcNormalPosition.right - cancelPlace.rcNormalPosition.left);\r
45                                 ::SetWindowPlacement(saveButton, &savePlace);\r
46 \r
47                                 DWORD style = ::GetWindowLong(okButton, GWL_STYLE);\r
48                                 ::SetWindowLong(okButton, GWL_STYLE, style  | WS_VISIBLE);\r
49                         } \r
50                         else \r
51                         {\r
52                                 WINDOWPLACEMENT okPlace;\r
53 \r
54                                 // Put Save on top of the invisible Send [OK]\r
55                                 ::GetWindowPlacement(okButton, &okPlace);\r
56 \r
57                                 ::SetWindowPlacement(saveButton, &okPlace);\r
58 \r
59                                 DWORD style = ::GetWindowLong(okButton, GWL_STYLE);\r
60                                 ::SetWindowLong(okButton, GWL_STYLE, style  & ~ WS_VISIBLE);\r
61                         }\r
62                 }\r
63                 return TRUE;\r
64         case WM_COMMAND:\r
65                 return DoCommand(LOWORD(wParam));\r
66         default:\r
67                 return FALSE;\r
68         }\r
69         return TRUE;\r
70 }\r
71 \r
72 LRESULT CMainDlg::DoCommand(int id)\r
73 {\r
74         switch (id)\r
75         {\r
76         case IDOK: // send\r
77                 {\r
78                         HWND     hWndEmail = ::GetDlgItem(*this, IDC_EMAIL);\r
79                         HWND     hWndDesc = ::GetDlgItem(*this, IDC_DESCRIPTION);\r
80                         int      nEmailLen = ::GetWindowTextLength(hWndEmail) + 1;\r
81                         int      nDescLen = ::GetWindowTextLength(hWndDesc) + 1;\r
82 \r
83                         TCHAR * lpStr = new TCHAR[nEmailLen+1];\r
84                         ::GetWindowText(hWndEmail, lpStr, nEmailLen);\r
85                         m_sEmail = lpStr;\r
86                         delete [] lpStr;\r
87 \r
88                         lpStr = new TCHAR[nDescLen+1];\r
89                         ::GetWindowText(hWndDesc, lpStr, nDescLen);\r
90                         m_sDescription = lpStr;\r
91                         delete [] lpStr;\r
92                 }\r
93                 EndDialog(*this, IDOK);\r
94                 return 0;\r
95                 break;\r
96         case IDC_SAVE:\r
97                 EndDialog(*this, IDC_SAVE);\r
98                 return 0;\r
99                 break;\r
100         case IDCANCEL:\r
101                 EndDialog(*this, IDCANCEL);\r
102                 PostQuitMessage(IDCANCEL);\r
103                 return 0;\r
104                 break;\r
105         }\r
106         return 1;\r
107 }\r