#include "metacontacts.h" HICON hIconToggleOn, hIconToggleOff, hIconConvert, hIconAdd, hIconEdit, hIconDefault, hIconRemove; HANDLE hIcoLibIconsChanged = 0; int ReloadIcons(WPARAM wParam, LPARAM lParam) { hIconToggleOff = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_off"); hIconToggleOn = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_on"); hIconConvert = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_convert"); hIconAdd = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_add"); hIconEdit = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_edit"); hIconDefault = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_default"); hIconRemove = (HICON)CallService(MS_SKIN2_GETICON, 0, (LPARAM)"mc_remove"); { // fix menu icons CLISTMENUITEM menu; ZeroMemory(&menu,sizeof(menu)); menu.cbSize=sizeof(menu); menu.flags = CMIM_ICON; if(!Meta_IsEnabled()) menu.hIcon=hIconToggleOn; else menu.hIcon=hIconToggleOff; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuOnOff, (LPARAM)&menu); menu.hIcon = hIconConvert; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuConvert, (LPARAM)&menu); menu.hIcon = hIconAdd; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuAdd, (LPARAM)&menu); menu.hIcon = hIconEdit; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuEdit, (LPARAM)&menu); menu.hIcon = hIconDefault; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDefault, (LPARAM)&menu); menu.hIcon = hIconRemove; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuDelete, (LPARAM)&menu); } return 0; } void InitIcons() { if(ServiceExists(MS_SKIN2_ADDICON)) { SKINICONDESC2 sid = {0}; sid.cbSize = sizeof(SKINICONDESC2); sid.pszSection = "MetaContacts"; #define AddIcon(x,y,z) \ sid.pszDescription = Translate(x); \ sid.pszName = y; \ sid.pszDefaultFile = "MetaContacts.dll"; \ sid.hDefaultIcon = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(z), IMAGE_ICON, 0, 0, 0); \ CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid); \ sid.iDefaultIndex++; AddIcon("Toggle Off", "mc_off", IDI_MCMENUOFF); AddIcon("Toggle On", "mc_on", IDI_MCMENU); AddIcon("Convert to MetaContact", "mc_convert", IDI_MCCONVERT); AddIcon("Add to Existing", "mc_add", IDI_MCADD); AddIcon("Edit", "mc_edit", IDI_MCEDIT); AddIcon("Set to Default", "mc_default", IDI_MCSETDEFAULT); AddIcon("Remove", "mc_remove", IDI_MCREMOVE); #undef AddIcon ReloadIcons(0, 0); hIcoLibIconsChanged = HookEvent(ME_SKIN2_ICONSCHANGED, ReloadIcons); } else { hIconToggleOff = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCMENUOFF), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS ); hIconToggleOn = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCMENU), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS ); hIconConvert = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCCONVERT), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS ); hIconAdd = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCADD), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS ); hIconEdit = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCEDIT), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS ); hIconDefault = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCSETDEFAULT), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS ); hIconRemove = (HICON)LoadImage(hInstance, MAKEINTRESOURCE(IDI_MCREMOVE), IMAGE_ICON, 0, 0, 0);//LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS ); } } void DeinitIcons() { if(hIcoLibIconsChanged) UnhookEvent(hIcoLibIconsChanged); else { DestroyIcon(hIconToggleOff); DestroyIcon(hIconToggleOn); DestroyIcon(hIconConvert); DestroyIcon(hIconAdd); DestroyIcon(hIconEdit); DestroyIcon(hIconDefault); DestroyIcon(hIconRemove); } }