-
-
Notifications
You must be signed in to change notification settings - Fork 5
/
XG_NotesDialog.hpp
82 lines (73 loc) · 2.15 KB
/
XG_NotesDialog.hpp
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
#pragma once
#include "XG_Window.hpp"
// [ヘッダーと備考欄]ダイアログ。
class XG_NotesDialog : public XG_Dialog
{
public:
XG_NotesDialog() noexcept
{
}
BOOL OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
// ダイアログを中央へ移動する。
XgCenterDialog(hwnd);
// ヘッダーを設定する。
if (xg_strHeader.empty()) {
xg_strHeader = L"Title: (Untitled)\r\nAuthor: \r\nEditor: \r\nCopyright: \r\nDate: YYYY-MM-DD";
}
::SetDlgItemTextW(hwnd, edt1, xg_strHeader.data());
// 備考欄を設定する。
XGStringW str = xg_strNotes;
xg_str_trim(str);
LPWSTR psz = XgLoadStringDx1(IDS_BELOWISNOTES);
if (str.find(psz) == 0) {
str = str.substr(::lstrlenW(psz));
}
::SetDlgItemTextW(hwnd, edt2, str.data());
return TRUE;
}
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
WCHAR sz[512];
XGStringW str;
switch (id)
{
case IDOK:
// ヘッダーを取得する。
::GetDlgItemTextW(hwnd, edt1, sz, static_cast<int>(_countof(sz)));
str = sz;
xg_str_trim(str);
xg_strHeader = str;
// 備考欄を取得する。
::GetDlgItemTextW(hwnd, edt2, sz, static_cast<int>(_countof(sz)));
str = sz;
xg_str_trim(str);
xg_strNotes = str;
// ダイアログを閉じる。
::EndDialog(hwnd, IDOK);
break;
case IDCANCEL:
// ダイアログを閉じる。
::EndDialog(hwnd, IDCANCEL);
break;
default:
break;
}
}
INT_PTR CALLBACK
DialogProcDx(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) override
{
switch (uMsg)
{
HANDLE_MSG(hwnd, WM_INITDIALOG, OnInitDialog);
HANDLE_MSG(hwnd, WM_COMMAND, OnCommand);
default:
break;
}
return 0;
}
INT_PTR DoModal(HWND hwnd)
{
return DialogBoxDx(hwnd, IDD_NOTES);
}
};