From a338e594273bda039eec784ecb461395f23bd56e Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 17 May 2012 15:50:17 +0000 Subject: - missing plugins added - fixes for the status plugins' projects - other VS2010 projects cleaning git-svn-id: http://svn.miranda-ng.org/main/trunk@13 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/utils/mir_icons.cpp | 86 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 plugins/utils/mir_icons.cpp (limited to 'plugins/utils/mir_icons.cpp') diff --git a/plugins/utils/mir_icons.cpp b/plugins/utils/mir_icons.cpp new file mode 100644 index 0000000000..1fb2c0ef82 --- /dev/null +++ b/plugins/utils/mir_icons.cpp @@ -0,0 +1,86 @@ +/* +Copyright (C) 2007-2009 Ricardo Pescuma Domenecci + +This is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with this file; see the file license.txt. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. +*/ + + +#include "mir_icons.h" + +#include +#include +#include + +extern HINSTANCE hInst; + + + +HICON IcoLib_LoadIcon(const char *iconName, BOOL copy) +{ + if (!ServiceExists(MS_SKIN2_GETICON)) + return NULL; + + if (iconName == NULL || iconName[0] == 0) + return NULL; + + HICON hIcon = (HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM) iconName); + if (copy && hIcon != NULL) + { + hIcon = CopyIcon(hIcon); + CallService(MS_SKIN2_RELEASEICON, (WPARAM) hIcon, 0); + } + return hIcon; +} + +void IcoLib_ReleaseIcon(const char *iconName) +{ + if (ServiceExists(MS_SKIN2_RELEASEICON)) + CallService(MS_SKIN2_RELEASEICON, 0, (LPARAM) iconName); +} + + +void IcoLib_ReleaseIcon(HICON hIcon) +{ + if (ServiceExists(MS_SKIN2_RELEASEICON)) + CallService(MS_SKIN2_RELEASEICON, (WPARAM) hIcon, 0); +} + + +void IcoLib_Register(char *name, TCHAR *section, TCHAR *description, int id) +{ + HICON hIcon = (HICON) CallService(MS_SKIN2_GETICON, 0, (LPARAM) name); + if (hIcon != NULL) + { + CallService(MS_SKIN2_RELEASEICON, (WPARAM) hIcon, 0); + return; + } + + SKINICONDESC sid = {0}; + sid.cbSize = sizeof(SKINICONDESC); + sid.flags = SIDF_TCHAR; + sid.pszName = name; + sid.ptszSection = section; + sid.ptszDescription = description; + + int cx = GetSystemMetrics(SM_CXSMICON); + sid.hDefaultIcon = (HICON) LoadImage(hInst, MAKEINTRESOURCE(id), IMAGE_ICON, cx, cx, LR_DEFAULTCOLOR | LR_SHARED); + + CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid); + + if (sid.hDefaultIcon) + DestroyIcon(sid.hDefaultIcon); +} + -- cgit v1.2.3