From 798a7bc2ee5f488d67831c11778f209bdadcba02 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 21 Jun 2012 18:03:23 +0000 Subject: patch for the core Mbutton class customization, to use the themes defined by plugins git-svn-id: http://svn.miranda-ng.org/main/trunk@514 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- include/m_button.h | 9 ++++++- include/m_button_int.h | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++ include/m_popup.h | 6 ++--- 3 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 include/m_button_int.h (limited to 'include') diff --git a/include/m_button.h b/include/m_button.h index 3de4acb033..d883143793 100644 --- a/include/m_button.h +++ b/include/m_button.h @@ -69,11 +69,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define BUTTONADDTOOLTIP (WM_USER+5) -// Sets the button type as a themed button without borders +// Applies themes to a button // wParam = TRUE/FALSE default on/off // lParam = not used // Usage: SendMessage(hwndbutton, BUTTONSETASTHEMEDBTN, 1, 0); // Only works on MButtonClass buttons #define BUTTONSETASTHEMEDBTN (WM_USER+6) +// Sets the custom painting procedure for a button +// wParam = not used +// lParam = MButtonCustomize* (refer to mbutton_int.h for details) +// Usage: SendMessage(hwndbutton, BUTTONSETCUSTOM, 0, (LPARAM)&CustomData); +// Only works on MButtonClass buttons +#define BUTTONSETCUSTOM (WM_USER+7) + #endif // M_BUTTON_H__ diff --git a/include/m_button_int.h b/include/m_button_int.h new file mode 100644 index 0000000000..0b6f9556d2 --- /dev/null +++ b/include/m_button_int.h @@ -0,0 +1,72 @@ +/* + +Miranda IM: the free IM client for Microsoft* Windows* + +Copyright 2000-2008 Miranda ICQ/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. +*/ +// Added in 0.3.0.0+ + +#ifndef M_BUTTON_INT_H__ +#define M_BUTTON_INT_H__ 1 + +#include + +interface IAccPropServices; + +typedef void (__cdecl *pfnPainterFunc)(struct MButtonCtrl*, HDC); + +struct MButtonCtrl +{ + HWND hwnd; + int stateId; // button state + int focus; // has focus (1 or 0) + HFONT hFont; // font + HICON arrow; // uses down arrow + HICON hIcon; + HBITMAP hBitmap; + HTHEME hThemeButton; + HTHEME hThemeToolbar; + TCHAR cHot; + HWND hwndToolTips; + + bool bIsPushBtn, // button has two states + bIsPushed, // is button pushed or not + bIsDefault, // default button + bIsFlat, // flat button + bIsThemed, // themed button + bIsSkinned; // skinned button + + WNDPROC fnWindowProc; // custom window proc + pfnPainterFunc fnPainter; // custom button painter + + IAccPropServices* pAccPropServices; +}; + +///////////////////////////////////////////////////////////////// + +typedef void (__cdecl *pfnPainterFunc)(MButtonCtrl*, HDC); + +struct MButtonCustomize +{ + size_t cbLen; // total length of the internal data structure + WNDPROC fnWindowProc; // subclassed windows procedure for the custom button + pfnPainterFunc fnPainter; // custom button painter +}; + +#endif // M_BUTTON_INT_H__ diff --git a/include/m_popup.h b/include/m_popup.h index afac6c1696..54ce2cd09a 100644 --- a/include/m_popup.h +++ b/include/m_popup.h @@ -1,10 +1,10 @@ /* - == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + =============================================================================== PopUp plugin Plugin Name: PopUp Plugin authors: Luca Santarelli aka hrk (hrk@users.sourceforge.net) Victor Pavlychko aka zazoo (nullbie@gmail.com) - == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + =============================================================================== The purpose of this plugin is to give developers a common "platform/interface" to show PopUps. It is born from the source code of NewStatusNotify, another plugin I've made. @@ -12,7 +12,7 @@ plugin I've made. Remember that users *must* have this plugin enabled, or they won't get any popup. Write this in the requirements, do whatever you wish ;-)... but tell them! - == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == = + =============================================================================== */ #ifndef M_POPUP_H -- cgit v1.2.3