From 66cb770a982a2502456d10d73838df2b7239fd89 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Mon, 4 Mar 2013 07:23:42 +0000 Subject: new subclassing functions applied to all plugins git-svn-id: http://svn.miranda-ng.org/main/trunk@3880 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/BasicHistory/src/HistoryWindow.cpp | 11 +-- plugins/BasicHistory/src/HistoryWindow.h | 1 - plugins/BasicHistory/src/HotkeyHelper.cpp | 141 +++++++++++++---------------- plugins/BasicHistory/src/HotkeyHelper.h | 1 - 4 files changed, 66 insertions(+), 88 deletions(-) (limited to 'plugins/BasicHistory') diff --git a/plugins/BasicHistory/src/HistoryWindow.cpp b/plugins/BasicHistory/src/HistoryWindow.cpp index 98ca26771c..8fefc1062b 100644 --- a/plugins/BasicHistory/src/HistoryWindow.cpp +++ b/plugins/BasicHistory/src/HistoryWindow.cpp @@ -40,7 +40,6 @@ void ResetCList(HWND hWnd); HistoryWindow::HistoryWindow(HANDLE _hContact) : isDestroyed(true), - OldSplitterProc(0), splitterY(0), splitterOrgY(0), splitterX(0), @@ -1174,8 +1173,8 @@ void HistoryWindow::Initialise() { splitterXhWnd = GetDlgItem(hWnd, IDC_SPLITTER); splitterYhWnd = GetDlgItem(hWnd, IDC_SPLITTERV); - OldSplitterProc = (WNDPROC)SetWindowLongPtr(splitterXhWnd, GWLP_WNDPROC, (LONG_PTR) SplitterSubclassProc); - SetWindowLongPtr(splitterYhWnd, GWLP_WNDPROC, (LONG_PTR) SplitterSubclassProc); + mir_subclassWindow(splitterXhWnd, SplitterSubclassProc); + mir_subclassWindow(splitterYhWnd, SplitterSubclassProc); editWindow = GetDlgItem(hWnd, IDC_EDIT); findWindow = GetDlgItem(hWnd, IDC_FIND_TEXT); @@ -1327,10 +1326,6 @@ void HistoryWindow::Destroy() hIcon = (HICON)SendMessage(hWnd, WM_SETICON, ICON_SMALL, 0); Skin_ReleaseIcon(hIcon); - - UnregisterHotkeyControl(GetDlgItem(hWnd, IDC_SHOWHIDE)); - UnregisterHotkeyControl(GetDlgItem(hWnd, IDC_LIST_CONTACTS)); - UnregisterHotkeyControl(findWindow); isDestroyed = true; HistoryWindow::Close(this); @@ -1749,7 +1744,7 @@ LRESULT CALLBACK HistoryWindow::SplitterSubclassProc(HWND hwnd, UINT msg, WPARAM return 0; } } - return CallWindowProc(dat->OldSplitterProc, hwnd, msg, wParam, lParam); + return mir_callNextSubclass(hwnd, HistoryWindow::SplitterSubclassProc, msg, wParam, lParam); } void HistoryWindow::EnableWindows(BOOL enable) diff --git a/plugins/BasicHistory/src/HistoryWindow.h b/plugins/BasicHistory/src/HistoryWindow.h index afc00c787d..66202937b4 100644 --- a/plugins/BasicHistory/src/HistoryWindow.h +++ b/plugins/BasicHistory/src/HistoryWindow.h @@ -59,7 +59,6 @@ private: HICON *eventIcons; int allIconNumber; HICON plusIco, minusIco, findNextIco, findPrevIco, configIco, deleteIco; - WNDPROC OldSplitterProc; bool isContactList; LONG listOryginalPos; bool isLoading; diff --git a/plugins/BasicHistory/src/HotkeyHelper.cpp b/plugins/BasicHistory/src/HotkeyHelper.cpp index 29f916ea3c..89db08013e 100644 --- a/plugins/BasicHistory/src/HotkeyHelper.cpp +++ b/plugins/BasicHistory/src/HotkeyHelper.cpp @@ -21,91 +21,76 @@ along with this program. If not, see . #include "resource.h" #include "Options.h" -LRESULT CALLBACK HotkeySubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); - -void RegisterHotkeyControl(HWND control) -{ - WNDPROC oldProc = (WNDPROC)SetWindowLongPtr(control, GWLP_WNDPROC, (LONG_PTR) HotkeySubclassProc); - SetWindowLongPtr(control, GWLP_USERDATA, (LONG_PTR) oldProc); -} - -void UnregisterHotkeyControl(HWND control) -{ - WNDPROC oldProc = (WNDPROC)GetWindowLongPtr(control, GWLP_USERDATA); - if(oldProc != NULL) - { - SetWindowLongPtr(control, GWLP_WNDPROC, (LONG_PTR) oldProc); - SetWindowLongPtr(control, GWLP_USERDATA, NULL); - } -} - static bool isPresed = false; -LRESULT CALLBACK HotkeySubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) +static LRESULT CALLBACK HotkeySubclassProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - WNDPROC oldProc = (WNDPROC)GetWindowLongPtr(hwnd, GWLP_USERDATA); - switch (msg) { - case WM_NCPAINT: - if(Options::instance->noFindBorder && GetDlgCtrlID(hwnd) == IDC_FIND_TEXT) - return 0; - break; - case WM_CHAR: - case WM_SYSCHAR: - case WM_UNICHAR: - case WM_DEADCHAR: - case WM_SYSDEADCHAR: - if(isPresed) - return 0; - break; - case WM_KEYUP: - case WM_SYSKEYUP: - if(isPresed) + case WM_NCPAINT: + if(Options::instance->noFindBorder && GetDlgCtrlID(hwnd) == IDC_FIND_TEXT) + return 0; + break; + case WM_CHAR: + case WM_SYSCHAR: + case WM_UNICHAR: + case WM_DEADCHAR: + case WM_SYSDEADCHAR: + if(isPresed) + return 0; + break; + case WM_KEYUP: + case WM_SYSKEYUP: + if(isPresed) + { + isPresed = false; + return 0; + } + break; + case WM_KEYDOWN: + case WM_SYSKEYDOWN: + { + isPresed = false; + HWND hwndParent = GetParent(hwnd); + MSGFILTER filter; + filter.msg = msg; + filter.lParam = lParam; + filter.wParam = wParam; + filter.nmhdr.hwndFrom = hwnd; + filter.nmhdr.code = EN_MSGFILTER; + filter.nmhdr.idFrom = GetDlgCtrlID(hwnd); + if(SendMessage(hwndParent, WM_NOTIFY, NULL, (LPARAM)&filter)) { - isPresed = false; + isPresed = true; return 0; } - break; - case WM_KEYDOWN: - case WM_SYSKEYDOWN: - { - isPresed = false; - HWND hwndParent = GetParent(hwnd); - MSGFILTER filter; - filter.msg = msg; - filter.lParam = lParam; - filter.wParam = wParam; - filter.nmhdr.hwndFrom = hwnd; - filter.nmhdr.code = EN_MSGFILTER; - filter.nmhdr.idFrom = GetDlgCtrlID(hwnd); - if(SendMessage(hwndParent, WM_NOTIFY, NULL, (LPARAM)&filter)) - { - isPresed = true; - return 0; - } - LRESULT res = CallWindowProc(oldProc, hwnd, msg, wParam, lParam); - filter.nmhdr.code = CLN_MYSELCHANGED; - SendMessage(hwndParent, WM_NOTIFY, NULL, (LPARAM)&filter); - return res; - } - break; - case WM_LBUTTONDOWN: - { - HWND hwndParent = GetParent(hwnd); - MSGFILTER filter; - filter.msg = msg; - filter.lParam = lParam; - filter.wParam = wParam; - filter.nmhdr.hwndFrom = hwnd; - filter.nmhdr.code = CLN_MYSELCHANGED; - filter.nmhdr.idFrom = GetDlgCtrlID(hwnd); + LRESULT res = mir_callNextSubclass(hwnd, HotkeySubclassProc, msg, wParam, lParam); + filter.nmhdr.code = CLN_MYSELCHANGED; + SendMessage(hwndParent, WM_NOTIFY, NULL, (LPARAM)&filter); + return res; + } + break; + case WM_LBUTTONDOWN: + { + HWND hwndParent = GetParent(hwnd); + MSGFILTER filter; + filter.msg = msg; + filter.lParam = lParam; + filter.wParam = wParam; + filter.nmhdr.hwndFrom = hwnd; + filter.nmhdr.code = CLN_MYSELCHANGED; + filter.nmhdr.idFrom = GetDlgCtrlID(hwnd); - LRESULT res = CallWindowProc(oldProc, hwnd, msg, wParam, lParam); - SendMessage(hwndParent, WM_NOTIFY, NULL, (LPARAM)&filter); - return res; - } - break; + LRESULT res = mir_callNextSubclass(hwnd, HotkeySubclassProc, msg, wParam, lParam); + SendMessage(hwndParent, WM_NOTIFY, NULL, (LPARAM)&filter); + return res; + } + break; } - return CallWindowProc(oldProc, hwnd, msg, wParam, lParam); -} \ No newline at end of file + return mir_callNextSubclass(hwnd, HotkeySubclassProc, msg, wParam, lParam); +} + +void RegisterHotkeyControl(HWND control) +{ + mir_subclassWindow(control, HotkeySubclassProc); +} diff --git a/plugins/BasicHistory/src/HotkeyHelper.h b/plugins/BasicHistory/src/HotkeyHelper.h index f31b1c6666..ab2b80b977 100644 --- a/plugins/BasicHistory/src/HotkeyHelper.h +++ b/plugins/BasicHistory/src/HotkeyHelper.h @@ -21,4 +21,3 @@ along with this program. If not, see . #define CLN_MYSELCHANGED (CLN_FIRST-50) void RegisterHotkeyControl(HWND control); -void UnregisterHotkeyControl(HWND control); -- cgit v1.2.3