From 8cd5b6ca7507b4d7ed327fd228ffcba992606c21 Mon Sep 17 00:00:00 2001 From: sje Date: Tue, 8 May 2007 15:09:01 +0000 Subject: change to use message loop and proper system-wide hot keys added ability to use the 'windows' key prettied up the options git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@167 4f64403b-2f21-0410-a795-97e2b3489a10 --- last_contact/options.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'last_contact/options.cpp') diff --git a/last_contact/options.cpp b/last_contact/options.cpp index 3637179..73e840e 100644 --- a/last_contact/options.cpp +++ b/last_contact/options.cpp @@ -3,28 +3,35 @@ Options options; +bool win_key_down; 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; + if(options.mod_win) mod |= HOTKEYF_EXT; + CheckDlgButton(hwndDlg, IDC_CHK_WIN, options.mod_win ? TRUE : FALSE); 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_RAD_HIDE, options.hide_if_visible ? TRUE : FALSE); + CheckDlgButton(hwndDlg, IDC_RAD_MULTI, options.hide_if_visible ? FALSE : TRUE); return TRUE; } case WM_COMMAND: if(HIWORD(wParam) == BN_CLICKED) { SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); - } + } else if ( HIWORD( wParam ) == EN_CHANGE && ( HWND )lParam == GetFocus()) { SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + win_key_down = (GetKeyState(VK_LWIN) < 0 || GetKeyState(VK_RWIN) < 0); + CheckDlgButton(hwndDlg, IDC_CHK_WIN, win_key_down ? TRUE : FALSE); } return TRUE; case WM_NOTIFY: @@ -34,14 +41,19 @@ static BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM l options.mod_alt = (HIBYTE(hkcode) & HOTKEYF_ALT) != 0; options.mod_shift = (HIBYTE(hkcode) & HOTKEYF_SHIFT) != 0; options.mod_ctrl = (HIBYTE(hkcode) & HOTKEYF_CONTROL) != 0; + //options.mod_win = (HIBYTE(hkcode) & HOTKEYF_EXT) != 0; + options.mod_win = IsDlgButtonChecked(hwndDlg, IDC_CHK_WIN) ? true : false; 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); + DBWriteContactSettingByte(0, MODULE, "MOD_WIN", options.mod_win ? 1 : 0); - options.hide_if_visible = IsDlgButtonChecked(hwndDlg, IDC_CHK_HIDE) ? true : false; + options.hide_if_visible = IsDlgButtonChecked(hwndDlg, IDC_RAD_HIDE) ? true : false; DBWriteContactSettingByte(0, MODULE, "HideIfVisible", options.hide_if_visible ? 1 : 0); + + PostThreadMessage(hotkey_thread_id, WMU_RESET_HOTKEY, 0, 0); } return TRUE; } @@ -72,6 +84,7 @@ void InitOptions() { 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.mod_win = (DBGetContactSettingByte(0, MODULE, "MOD_WIN", 0) == 1); options.hide_if_visible = (DBGetContactSettingByte(0, MODULE, "HideIfVisible", 1) == 1); HookEvent(ME_OPT_INITIALISE, OptInit); -- cgit v1.2.3