From 24cbc87262dc8856741db8e9f8388c18b16583ad Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sat, 20 Jun 2015 11:51:39 +0000 Subject: Windows colour picker wndclass moved to mir_core git-svn-id: http://svn.miranda-ng.org/main/trunk@14287 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- src/mir_app/src/colourpicker.cpp | 108 -------------------------------------- src/mir_app/src/utils.cpp | 2 - src/mir_core/src/colourpicker.cpp | 105 ++++++++++++++++++++++++++++++++++++ src/mir_core/src/miranda.cpp | 2 + 4 files changed, 107 insertions(+), 110 deletions(-) delete mode 100644 src/mir_app/src/colourpicker.cpp create mode 100644 src/mir_core/src/colourpicker.cpp (limited to 'src') diff --git a/src/mir_app/src/colourpicker.cpp b/src/mir_app/src/colourpicker.cpp deleted file mode 100644 index 3c30393f11..0000000000 --- a/src/mir_app/src/colourpicker.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/* - -Miranda NG: the free IM client for Microsoft* Windows* - -Copyright (ñ) 2012-15 Miranda NG project (http://miranda-ng.org), -Copyright (c) 2000-12 Miranda IM project, -all portions of this codebase are copyrighted to the people -listed in contributors.txt. - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "stdafx.h" - -static LRESULT CALLBACK ColourPickerWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) -{ - switch(message) { - case WM_CREATE: - SetWindowLongPtr(hwnd, 0, 0); - SetWindowLongPtr(hwnd, sizeof(COLORREF), 0); - break; - case CPM_SETDEFAULTCOLOUR: - SetWindowLongPtr(hwnd, sizeof(COLORREF), lParam); - break; - case CPM_GETDEFAULTCOLOUR: - return GetWindowLongPtr(hwnd, sizeof(COLORREF)); - case CPM_SETCOLOUR: - SetWindowLongPtr(hwnd, 0, lParam); - InvalidateRect(hwnd, NULL, FALSE); - break; - case CPM_GETCOLOUR: - return GetWindowLongPtr(hwnd, 0); - case WM_LBUTTONUP: - { - CHOOSECOLOR cc = {0}; - COLORREF custColours[16] = {0}; - custColours[0] = GetWindowLongPtr(hwnd, sizeof(COLORREF)); - cc.lStructSize = sizeof(CHOOSECOLOR); - cc.hwndOwner = hwnd; - cc.hInstance = (HWND)g_hInst; - cc.rgbResult = GetWindowLongPtr(hwnd, 0); - cc.lpCustColors = custColours; - cc.Flags = CC_ANYCOLOR|CC_FULLOPEN|CC_RGBINIT; - if (ChooseColor(&cc)) { - SetWindowLongPtr(hwnd, 0, cc.rgbResult); - SendMessage(GetParent(hwnd), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hwnd), CPN_COLOURCHANGED), (LPARAM)hwnd); - InvalidateRect(hwnd, NULL, FALSE); - } - break; - } - case WM_ENABLE: - InvalidateRect(hwnd, NULL, FALSE); - break; - case WM_NCPAINT: - case WM_PAINT: - { - PAINTSTRUCT ps; - HDC hdc1; - RECT rc; - HBRUSH hBrush; - - hdc1 = BeginPaint(hwnd, &ps); - GetClientRect(hwnd, &rc); - DrawEdge(hdc1, &rc, EDGE_ETCHED, BF_RECT); - InflateRect(&rc, -2, -2); - if (IsWindowEnabled(hwnd)) - hBrush = CreateSolidBrush(GetWindowLongPtr(hwnd, 0)); - else - hBrush = CreateHatchBrush(HS_BDIAGONAL, GetSysColor(COLOR_GRAYTEXT)); - SetBkColor(hdc1, GetSysColor(COLOR_BTNFACE)); - FillRect(hdc1, &rc, hBrush); - DeleteObject(hBrush); - EndPaint(hwnd, &ps); - break; - } - } - return DefWindowProc(hwnd, message, wParam, lParam); -} - -int InitColourPicker(void) -{ - WNDCLASS wcl; - - wcl.lpfnWndProc = ColourPickerWndProc; - wcl.cbClsExtra = 0; - wcl.cbWndExtra = sizeof(COLORREF)*2; - wcl.hInstance = g_hInst; - wcl.hCursor = NULL; - wcl.lpszClassName = _T(WNDCLASS_COLOURPICKER); - wcl.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1); - wcl.hIcon = NULL; - wcl.lpszMenuName = NULL; - wcl.style = CS_HREDRAW|CS_VREDRAW|CS_GLOBALCLASS; - RegisterClass(&wcl); - return 0; -} diff --git a/src/mir_app/src/utils.cpp b/src/mir_app/src/utils.cpp index c4350a31af..c5ec173858 100644 --- a/src/mir_app/src/utils.cpp +++ b/src/mir_app/src/utils.cpp @@ -30,7 +30,6 @@ INT_PTR ResizeDialog(WPARAM wParam, LPARAM lParam); int InitOpenUrl(void); int InitPathUtils(void); -int InitColourPicker(void); void InitXmlApi(void); int InitCrypt(void); @@ -378,7 +377,6 @@ int LoadUtilsModule(void) InitOpenUrl(); InitPathUtils(); - InitColourPicker(); InitXmlApi(); InitCrypt(); return 0; diff --git a/src/mir_core/src/colourpicker.cpp b/src/mir_core/src/colourpicker.cpp new file mode 100644 index 0000000000..75d0650431 --- /dev/null +++ b/src/mir_core/src/colourpicker.cpp @@ -0,0 +1,105 @@ +/* + +Miranda NG: the free IM client for Microsoft* Windows* + +Copyright (ñ) 2012-15 Miranda NG project (http://miranda-ng.org), +Copyright (c) 2000-12 Miranda IM project, +all portions of this codebase are copyrighted to the people +listed in contributors.txt. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include "stdafx.h" + +static LRESULT CALLBACK ColourPickerWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + switch (message) { + case WM_CREATE: + SetWindowLongPtr(hwnd, 0, 0); + SetWindowLongPtr(hwnd, sizeof(COLORREF), 0); + break; + + case CPM_SETDEFAULTCOLOUR: + SetWindowLongPtr(hwnd, sizeof(COLORREF), lParam); + break; + + case CPM_GETDEFAULTCOLOUR: + return GetWindowLongPtr(hwnd, sizeof(COLORREF)); + + case CPM_SETCOLOUR: + SetWindowLongPtr(hwnd, 0, lParam); + InvalidateRect(hwnd, NULL, FALSE); + break; + + case CPM_GETCOLOUR: + return GetWindowLongPtr(hwnd, 0); + + case WM_LBUTTONUP: + { + COLORREF custColours[16] = { 0 }; + custColours[0] = GetWindowLongPtr(hwnd, sizeof(COLORREF)); + + CHOOSECOLOR cc = { 0 }; + cc.lStructSize = sizeof(CHOOSECOLOR); + cc.hwndOwner = hwnd; + cc.hInstance = (HWND)hInst; + cc.rgbResult = GetWindowLongPtr(hwnd, 0); + cc.lpCustColors = custColours; + cc.Flags = CC_ANYCOLOR | CC_FULLOPEN | CC_RGBINIT; + if (ChooseColor(&cc)) { + SetWindowLongPtr(hwnd, 0, cc.rgbResult); + SendMessage(GetParent(hwnd), WM_COMMAND, MAKEWPARAM(GetDlgCtrlID(hwnd), CPN_COLOURCHANGED), (LPARAM)hwnd); + InvalidateRect(hwnd, NULL, FALSE); + } + } + break; + + case WM_ENABLE: + InvalidateRect(hwnd, NULL, FALSE); + break; + + case WM_NCPAINT: + case WM_PAINT: + PAINTSTRUCT ps; + HDC hdc1 = BeginPaint(hwnd, &ps); + + RECT rc; + GetClientRect(hwnd, &rc); + DrawEdge(hdc1, &rc, EDGE_ETCHED, BF_RECT); + InflateRect(&rc, -2, -2); + + HBRUSH hBrush = (IsWindowEnabled(hwnd)) ? CreateSolidBrush(GetWindowLongPtr(hwnd, 0)) : CreateHatchBrush(HS_BDIAGONAL, GetSysColor(COLOR_GRAYTEXT)); + SetBkColor(hdc1, GetSysColor(COLOR_BTNFACE)); + FillRect(hdc1, &rc, hBrush); + DeleteObject(hBrush); + + EndPaint(hwnd, &ps); + break; + } + return DefWindowProc(hwnd, message, wParam, lParam); +} + +void InitColourPicker(void) +{ + WNDCLASS wcl = { 0 }; + wcl.lpfnWndProc = ColourPickerWndProc; + wcl.cbWndExtra = sizeof(COLORREF) * 2; + wcl.hInstance = hInst; + wcl.lpszClassName = _T(WNDCLASS_COLOURPICKER); + wcl.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); + wcl.style = CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS; + RegisterClass(&wcl); +} diff --git a/src/mir_core/src/miranda.cpp b/src/mir_core/src/miranda.cpp index c3353e7d67..610d5382c0 100644 --- a/src/mir_core/src/miranda.cpp +++ b/src/mir_core/src/miranda.cpp @@ -34,6 +34,7 @@ void CheckLogs(); void InitLogs(); void UninitLogs(); +void InitColourPicker(); void InitHyperlink(); void InitMetaContacts(); void InitTimeZones(); @@ -85,6 +86,7 @@ static void LoadCoreModule(void) InitWinver(); InitPathUtils(); InitLogs(); + InitColourPicker(); InitHyperlink(); InitTimeZones(); InitialiseModularEngine(); -- cgit v1.2.3