-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
XG_HiddenDialog.cpp
108 lines (100 loc) · 3.63 KB
/
XG_HiddenDialog.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#pragma once
// 「隠し機能」ダイアログ。
class XG_HiddenDialog
{
public:
XG_HiddenDialog() noexcept
{
}
BOOL OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
XgCenterDialog(hwnd);
return TRUE;
}
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
switch (id)
{
case psh1: // PAT.txtに追加。
if (codeNotify == BN_CLICKED) {
HCURSOR hOldCursor = ::SetCursor(::LoadCursor(NULL, IDC_WAIT));
if (XgPatEdit(hwnd, TRUE)) {
// 成功メッセージ。
XgCenterMessageBoxW(hwnd, XgLoadStringDx1(IDS_WROTEPAT),
XgLoadStringDx2(IDS_APPNAME), MB_ICONINFORMATION);
} else {
// 失敗メッセージ。
XgCenterMessageBoxW(hwnd, XgLoadStringDx1(IDS_CANTWRITEPAT),
nullptr, MB_ICONERROR);
}
::SetCursor(hOldCursor);
}
break;
case psh2: // PAT.txtから削除。
if (codeNotify == BN_CLICKED) {
HCURSOR hOldCursor = ::SetCursor(::LoadCursor(NULL, IDC_WAIT));
if (XgPatEdit(hwnd, FALSE)) {
// 成功メッセージ。
XgCenterMessageBoxW(hwnd, XgLoadStringDx1(IDS_WROTEPAT),
XgLoadStringDx2(IDS_APPNAME), MB_ICONINFORMATION);
} else {
// 失敗メッセージ。
XgCenterMessageBoxW(hwnd, XgLoadStringDx1(IDS_CANTWRITEPAT),
nullptr, MB_ICONERROR);
}
::SetCursor(hOldCursor);
}
break;
case psh3: // アプリのフォルダを開く。
if (codeNotify == BN_CLICKED) {
WCHAR szPath[MAX_PATH];
GetModuleFileNameW(NULL, szPath, _countof(szPath));
PathRemoveFileSpecW(szPath);
ShellExecuteW(hwnd, NULL, szPath, NULL, NULL, SW_SHOWNORMAL);
}
break;
case psh4: // カギを使って辞書を更新する。
if (codeNotify == BN_CLICKED) {
HCURSOR hOldCursor = ::SetCursor(::LoadCursor(NULL, IDC_WAIT));
XG_HintsWnd::UpdateHintData(); // ヒントに変更があれば、更新する。
if (XgUpdateDictionaryUsingClues(hwnd, xg_dict_name)) {
} else {
}
::SetCursor(hOldCursor);
}
break;
}
}
INT_PTR CALLBACK
DialogProcDx(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
HANDLE_MSG(hwnd, WM_INITDIALOG, OnInitDialog);
HANDLE_MSG(hwnd, WM_COMMAND, OnCommand);
default:
break;
}
return 0;
}
static INT_PTR CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static XG_HiddenDialog* s_pThis = NULL;
if (uMsg == WM_INITDIALOG)
{
s_pThis = (XG_HiddenDialog*)lParam;
SetWindowLongPtrW(hwnd, DWLP_USER, (LONG_PTR)lParam);
}
else
{
s_pThis = (XG_HiddenDialog*)GetWindowLongPtrW(hwnd, DWLP_USER);
}
if (!s_pThis)
return 0;
return s_pThis->DialogProcDx(hwnd, uMsg, wParam, lParam);
}
INT_PTR DoModal(HWND hwnd)
{
return DialogBoxParamW(xg_hInstance, MAKEINTRESOURCEW(IDD_HIDDEN), hwnd, DialogProc, (LPARAM)this);
}
};