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
|
#include "common.h"
#include "options.h"
Options options;
static BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) {
switch ( msg ) {
case WM_INITDIALOG: {
TranslateDialogDefault( hwndDlg );
WORD mod = 0;
if(options.mod_alt) mod |= HOTKEYF_ALT;
if(options.mod_shift) mod |= HOTKEYF_SHIFT;
if(options.mod_ctrl) mod |= HOTKEYF_CONTROL;
SendDlgItemMessage(hwndDlg, IDC_HOTKEY, HKM_SETHOTKEY, (mod << 8) + options.vk, 0);
CheckDlgButton(hwndDlg, IDC_CHK_HIDE, options.hide_if_visible ? TRUE : FALSE);
CheckDlgButton(hwndDlg, IDC_CHK_ONTOP, options.make_topmost ? TRUE : FALSE);
return TRUE;
}
case WM_COMMAND:
if(HIWORD(wParam) == BN_CLICKED) {
SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
}
if ( HIWORD( wParam ) == EN_CHANGE && ( HWND )lParam == GetFocus()) {
SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
}
return TRUE;
case WM_NOTIFY:
if (((LPNMHDR)lParam)->code == (unsigned)PSN_APPLY ) {
WORD hkcode = (WORD)SendDlgItemMessage(hwndDlg, IDC_HOTKEY, HKM_GETHOTKEY, 0, 0);
options.vk = LOBYTE(hkcode);
options.mod_alt = (HIBYTE(hkcode) & HOTKEYF_ALT) != 0;
options.mod_shift = (HIBYTE(hkcode) & HOTKEYF_SHIFT) != 0;
options.mod_ctrl = (HIBYTE(hkcode) & HOTKEYF_CONTROL) != 0;
DBWriteContactSettingByte(0, MODULE, "VK", (BYTE)options.vk);
DBWriteContactSettingByte(0, MODULE, "MOD_ALT", options.mod_alt ? 1 : 0);
DBWriteContactSettingByte(0, MODULE, "MOD_SHIFT", options.mod_shift ? 1 : 0);
DBWriteContactSettingByte(0, MODULE, "MOD_CTRL", options.mod_ctrl ? 1 : 0);
options.hide_if_visible = IsDlgButtonChecked(hwndDlg, IDC_CHK_HIDE) ? true : false;
DBWriteContactSettingByte(0, MODULE, "HideIfVisible", options.hide_if_visible ? 1 : 0);
options.make_topmost = IsDlgButtonChecked(hwndDlg, IDC_CHK_ONTOP) ? true : false;
DBWriteContactSettingByte(0, MODULE, "MakeTopmost", options.make_topmost ? 1 : 0);
}
return TRUE;
}
return FALSE;
}
int OptInit(WPARAM wParam,LPARAM lParam)
{
OPTIONSDIALOGPAGE odp = { 0 };
odp.cbSize = sizeof(odp);
odp.position = -790000000;
odp.hInstance = hInst;
odp.pszTemplate = MAKEINTRESOURCE(IDD_OPT1);
odp.pszTitle = Translate("Last Contact");
odp.pszGroup = Translate("Events");
odp.flags = ODPF_BOLDGROUPS;
odp.nIDBottomSimpleControl = 0;
odp.pfnDlgProc = DlgProcOpts;
CallService( MS_OPT_ADDPAGE, wParam,( LPARAM )&odp );
return 0;
}
void InitOptions() {
options.vk = DBGetContactSettingByte(0, MODULE, "VK", (BYTE)'M');
options.mod_alt = (DBGetContactSettingByte(0, MODULE, "MOD_ALT", 1) == 1);
options.mod_shift = (DBGetContactSettingByte(0, MODULE, "MOD_SHIFT", 0) == 1);
options.mod_ctrl = (DBGetContactSettingByte(0, MODULE, "MOD_CTRL", 0) == 1);
options.hide_if_visible = (DBGetContactSettingByte(0, MODULE, "HideIfVisible", 1) == 1);
options.make_topmost = (DBGetContactSettingByte(0, MODULE, "MakeTopmost", 0) == 1);
HookEvent(ME_OPT_INITIALISE, OptInit);
}
|