HRESULT ToolbarLoadModule() { tbdat.hehModulesLoaded=ModernHookEvent(ME_SYSTEM_MODULESLOADED, ehhToolbarModulesLoaded); tbdat.hehSystemShutdown=ModernHookEvent(ME_SYSTEM_SHUTDOWN, ehhToolBarSystemShutdown); { //create window class WNDCLASS wndclass={0}; if (GetClassInfo(g_hInst,_T(MIRANDATOOLBARCLASSNAME),&wndclass) ==0) { wndclass.style = 0; wndclass.lpfnWndProc = ToolBar_WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; wndclass.hInstance = g_hInst; wndclass.hIcon = NULL; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW); wndclass.hbrBackground = GetSysColorBrush(COLOR_3DFACE); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = _T(MIRANDATOOLBARCLASSNAME); RegisterClass(&wndclass); } } tbdat.listOfButtons=li.List_Create(0,1); InitializeCriticalSection(&tbdat.cs); return S_OK; }
static int ehhToolbarModulesLoaded(WPARAM wParam, LPARAM lParam) { CallService(MS_BACKGROUNDCONFIG_REGISTER,(WPARAM)"ToolBar Background/ToolBar",0); ModernHookEvent(ME_BACKGROUNDCONFIG_CHANGED,ehhToolBarBackgroundSettingsChanged); tbdat.hehOptInit=ModernHookEvent(ME_OPT_INITIALISE,ehhToolbarOptInit); ehhToolBarBackgroundSettingsChanged(0,0); tbdat.hehSettingsChanged=ModernHookEvent(ME_DB_CONTACT_SETTINGCHANGED, ehhToolBarSettingsChanged ); tbdat.hToolBarWindowList=(HANDLE) CallService(MS_UTILS_ALLOCWINDOWLIST,0,0); CreateServiceFunction(MS_TB_ADDBUTTON,svcToolBarAddButton); CreateServiceFunction(MS_TB_REMOVEBUTTON, svcToolBarRemoveButton); CreateServiceFunction(MS_TB_SETBUTTONSTATE, svcToolBarSetButtonState); CreateServiceFunction(MS_TB_SETBUTTONSTATEBYID, svcToolBarSetButtonStateById); CreateServiceFunction(MS_TB_GETBUTTONSTATE, svcToolBarGetButtonState); CreateServiceFunction(MS_TB_GETBUTTONSTATEBYID, svcToolBarGetButtonStateById); HWND hwndClist=(HWND) CallService(MS_CLUI_GETHWND,0,0); sttCreateToolBarFrame( hwndClist, ("ToolBar"), 24); NotifyEventHooks(g_CluiData.hEventToolBarModuleLoaded, 0, 0); return 0; }
// Init AniAva module int AniAva_InitModule() { memset(&AniAva,0,sizeof(AniAva)); if (g_CluiData.fGDIPlusFail) return 0; if (!( ModernGetSettingByte(NULL,"CList","AvatarsAnimated",(ServiceExists(MS_AV_GETAVATARBITMAP)&&!g_CluiData.fGDIPlusFail)) && ModernGetSettingByte(NULL,"CList","AvatarsShow",SETTINGS_SHOWAVATARS_DEFAULT) ) ) return 0; { WNDCLASSEX wc; ZeroMemory(&wc, sizeof(wc)); wc.cbSize = sizeof(wc); wc.lpszClassName = ANIAVAWINDOWCLASS; wc.lpfnWndProc = _AniAva_WndProc; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.cbWndExtra = sizeof(ANIAVA_WINDOWINFO*); wc.hbrBackground = 0; wc.style = CS_GLOBALCLASS; RegisterClassEx(&wc); } InitializeCriticalSection(&AniAva.CS); AniAva.Objects=li.List_Create(0,2); AniAva.AniAvatarList=li.List_Create(0,1); AniAva.AniAvatarList->sortFunc=_AniAva_SortAvatarInfo; AniAva.bModuleStarted=TRUE; AniAva.hExitEvent=CreateEvent(NULL,FALSE,FALSE,NULL); AniAva.AnimationThreadID=(DWORD)mir_forkthread(_AniAva_AnimationTreadProc, (void*)AniAva.hExitEvent); ModernHookEvent(ME_SYSTEM_PRESHUTDOWN, _AniAva_OnModulesUnload); _AniAva_LoadOptions(); return 1; }
int LoadFavoriteContactMenu() { CreateServiceFunction(CLUI_FAVSETRATE,FAV_SetRate); CreateServiceFunction(CLUI_FAVTOGGLESHOWOFFLINE,FAV_ToggleShowOffline); hOnContactMenuBuild_FAV=ModernHookEvent(ME_CLIST_PREBUILDCONTACTMENU,FAV_OnContactMenuBuild); return 0; }
void ExtraImage_LoadModule() { CreateServiceFunction(MS_CLIST_EXTRA_SET_ICON,WideSetIconForExtraColumn); CreateServiceFunction(MS_CLIST_EXTRA_ADD_ICON,WideAddIconToExtraImageList); //CreateServiceFunction(MS_CLIST_EXTRA2_SET_ICON,WideSetIconForExtraColumn); //CreateServiceFunction(MS_CLIST_EXTRA2_ADD_ICON,WideAddIconToExtraImageList); //HookEvent(ME_SKIN2_ICONSCHANGED,OnIconLibIconChanged); ModernHookEvent(ME_CLC_SHOWEXTRAINFOTIP, ehhShowExtraInfoTip ); ModernHookEvent(ME_CLC_HIDEINFOTIP, ehhHideExtraInfoTip ); ModernHookEvent(ME_SYSTEM_SHUTDOWN, ehhExtraImage_UnloadModule ); };
void InitCacheAsync() { InitializeCriticalSection(>aCS); hgtaWakeupEvent=CreateEvent(NULL,FALSE,FALSE,NULL); g_dwGetTextAsyncThreadID=(DWORD)mir_forkthread((pThreadFunc)gtaThreadProc,0); ModernHookEvent(ME_SYSTEM_PRESHUTDOWN, gtaOnModulesUnload); }
HRESULT ToolbarButtonLoadModule() { WNDCLASSEX wc; ZeroMemory(&wc, sizeof(wc)); wc.cbSize = sizeof(wc); wc.lpszClassName =SKINBUTTONCLASS; wc.lpfnWndProc = TollbarButtonProc; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.cbWndExtra = sizeof(TBBUTTONDATA *); wc.hbrBackground = 0; wc.style = CS_GLOBALCLASS; RegisterClassEx(&wc); hButtonWindowList=(HANDLE) CallService(MS_UTILS_ALLOCWINDOWLIST, 0, 0); hIconChangedHook=ModernHookEvent(ME_SKIN2_ICONSCHANGED,OnIconLibIconChanged); hBkgChangedHook=ModernHookEvent(ME_BACKGROUNDCONFIG_CHANGED,Buttons_OnSkinModeSettingsChanged); return S_OK; }
HRESULT CluiLoadModule() { CreateServiceFunction(MS_CLUI_GETCAPS,CLUIGetCapsService); InitDisplayNameCache(); hookSystemShutdown_CListMod = ModernHookEvent(ME_SYSTEM_SHUTDOWN,CListMod_ContactListShutdownProc); hookOptInitialise_CList = ModernHookEvent(ME_OPT_INITIALISE,CListOptInit); hookOptInitialise_Skin = ModernHookEvent(ME_OPT_INITIALISE,SkinOptInit); CreateServiceFunction("ModernSkinSel/Active", SvcActiveSkin); CreateServiceFunction("ModernSkinSel/Preview", SvcPreviewSkin); CreateServiceFunction("ModernSkinSel/Apply", SvcApplySkin); hookContactAdded_CListSettings = ModernHookEvent(ME_DB_CONTACT_ADDED,ContactAdded); CreateServiceFunction(MS_CLIST_TRAYICONPROCESSMESSAGE,cli_TrayIconProcessMessage); CreateServiceFunction(MS_CLIST_PAUSEAUTOHIDE,TrayIconPauseAutoHide); CreateServiceFunction(MS_CLIST_CONTACTCHANGEGROUP,ContactChangeGroup); CreateServiceFunction(MS_CLIST_TOGGLEHIDEOFFLINE,ToggleHideOffline); CreateServiceFunction(MS_CLIST_TOGGLEGROUPS,ToggleGroups); CreateServiceFunction(MS_CLIST_TOGGLESOUNDS,ToggleSounds); CreateServiceFunction(MS_CLIST_SETUSEGROUPS,SetUseGroups); CreateServiceFunction(MS_CLIST_GETCONTACTICON,GetContactIcon); MySetProcessWorkingSetSize=(BOOL (WINAPI*)(HANDLE,SIZE_T,SIZE_T))GetProcAddress(GetModuleHandle(TEXT("kernel32")),"SetProcessWorkingSetSize"); hCListImages = ImageList_Create(16, 16, ILC_MASK|ILC_COLOR32, 32, 0); InitCustomMenus(); InitTray(); { HINSTANCE hUser = GetModuleHandleA("USER32"); MyMonitorFromPoint = ( pfnMyMonitorFromPoint )GetProcAddress( hUser,"MonitorFromPoint" ); MyMonitorFromWindow = ( pfnMyMonitorFromWindow )GetProcAddress( hUser, "MonitorFromWindow" ); #if defined( _UNICODE ) MyGetMonitorInfo = ( pfnMyGetMonitorInfo )GetProcAddress( hUser, "GetMonitorInfoW"); #else MyGetMonitorInfo = ( pfnMyGetMonitorInfo )GetProcAddress( hUser, "GetMonitorInfoA"); #endif } CLUI::InitClui(); return S_OK; }
HRESULT PreLoadContactListModule() { /* Global data initialization */ { g_CluiData.fOnDesktop=FALSE; g_CluiData.dwKeyColor=RGB(255,0,255); g_CluiData.bCurrentAlpha=255; } //initialize firstly hooks //clist interface is empty yet so handles should check hSettingChanged = ModernHookEvent(ME_DB_CONTACT_SETTINGCHANGED,ContactSettingChanged); CreateServiceFunction(MS_CLIST_GETCONTACTICON,GetContactIcon); return S_OK; }
void InitSubGroupMenus(void) { TMenuParam tmp; OptParam op; CreateServiceFunction("CLISTMENUSSubGroup/ExecService",SubGroupMenuExecService); CreateServiceFunction("CLISTMENUSSubGroup/FreeOwnerDataSubGroupMenu",FreeOwnerDataSubGroupMenu); CreateServiceFunction("CLISTMENUSSubGroup/SubGroupMenuonAddService",SubGroupMenuonAddService); CreateServiceFunction("CLISTMENUSSubGroup/SubGroupMenuCheckService",SubGroupMenuCheckService); CreateServiceFunction("CLISTMENUSSubGroup/GroupMenuExecProxy",GroupMenuExecProxy); //CreateServiceFunction("CLISTMENUSSubGroup/HideSubGroupsHelper",HideSubGroupsHelper); //CreateServiceFunction("CLISTMENUSSubGroup/UseSubGroupsHelper",UseSubGroupsHelper); //CreateServiceFunction("CLISTMENUSSubGroup/HideOfflineRootHelper",HideOfflineRootHelper); CreateServiceFunction(MS_CLIST_ADDSUBGROUPMENUITEM,AddSubGroupMenuItem); CreateServiceFunction(MS_CLIST_REMOVESUBGROUPMENUITEM,RemoveSubGroupMenuItem); CreateServiceFunction(MS_CLIST_MENUBUILDSUBGROUP,BuildSubGroupMenu); ModernHookEvent(ME_CLIST_PREBUILDSUBGROUPMENU,OnBuildSubGroupMenu); //SubGroup menu memset(&tmp,0,sizeof(tmp)); tmp.cbSize=sizeof(tmp); tmp.CheckService=NULL; tmp.ExecService="CLISTMENUSSubGroup/ExecService"; tmp.name=LPGEN("SubGroupMenu"); hSubGroupMenuObject=(HANDLE)CallService(MO_CREATENEWMENUOBJECT,(WPARAM)0,(LPARAM)&tmp); op.Handle=hSubGroupMenuObject; op.Setting=OPT_USERDEFINEDITEMS; op.Value=TRUE; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); op.Handle=hSubGroupMenuObject; op.Setting=OPT_MENUOBJECT_SET_FREE_SERVICE; op.Value=(INT_PTR)"CLISTMENUSSubGroup/FreeOwnerDataSubGroupMenu"; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); op.Handle=hSubGroupMenuObject; op.Setting=OPT_MENUOBJECT_SET_ONADD_SERVICE; op.Value=(INT_PTR)"CLISTMENUSSubGroup/SubGroupMenuonAddService"; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); op.Handle=hSubGroupMenuObject; op.Setting=OPT_MENUOBJECT_SET_CHECK_SERVICE; op.Value=(INT_PTR)"CLISTMENUSSubGroup/SubGroupMenuCheckService"; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); { //add exit command to menu CLISTMENUITEM mi; GroupMenuParam gmp; memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=1000; mi.hIcon=ske_ImageList_GetIcon(hCListImages,NewGroupIconidx,0); mi.pszService="CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName=LPGEN("&New SubGroup"); gmp.lParam=0;gmp.wParam=POPUP_NEWSUBGROUP; hNewSubGroupMenuItem=(HANDLE)AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=1001; mi.hIcon=NULL; mi.pszService="CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName=LPGEN("&Hide Offline Users in here"); gmp.lParam=0; gmp.wParam=POPUP_GROUPHIDEOFFLINE; hHideOfflineUsersHereMenuItem=(HANDLE)AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=1002; mi.hIcon=NULL; mi.pszService="CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName=LPGEN("&Show Offline Users in here"); gmp.lParam=0; gmp.wParam=POPUP_GROUPSHOWOFFLINE; hShowOfflineUsersHereMenuItem=(HANDLE)AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=900001; mi.flags=CMIF_ICONFROMICOLIB; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_RENAME); mi.pszService="CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName=LPGEN("&Rename Group"); gmp.lParam=0;gmp.wParam=POPUP_RENAMEGROUP; AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=900002; mi.flags=CMIF_ICONFROMICOLIB; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_DELETE); mi.pszService="CLISTMENUSSubGroup/GroupMenuExecProxy"; mi.pszName=LPGEN("&Delete Group"); gmp.lParam=0;gmp.wParam=POPUP_DELETEGROUP; AddSubGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); //MS_CLIST_SubGroupCREATE }; }
void GroupMenus_Init(void) { TMenuParam tmp; OptParam op; HICON hicon; BOOL needFree; hicon=CLUI_LoadIconFromExternalFile("clisticons.dll",2,TRUE,TRUE,"NewGroup","Contact List","New Group",-IDI_NEWGROUP2,&needFree); NewGroupIconidx=hicon?ImageList_AddIcon(hCListImages,hicon ):-1; if (needFree) DestroyIcon_protect(hicon); CreateServiceFunction("CLISTMENUSGroup/ExecService",GroupMenuExecService); CreateServiceFunction("CLISTMENUSGroup/FreeOwnerDataGroupMenu",FreeOwnerDataGroupMenu); CreateServiceFunction("CLISTMENUSGroup/GroupMenuonAddService",GroupMenuonAddService); CreateServiceFunction("CLISTMENUSGroup/HideGroupsHelper",HideGroupsHelper); CreateServiceFunction("CLISTMENUSGroup/UseGroupsHelper",UseGroupsHelper); CreateServiceFunction("CLISTMENUSGroup/HideOfflineRootHelper",HideOfflineRootHelper); CreateServiceFunction(MS_CLIST_ADDGROUPMENUITEM,AddGroupMenuItem); CreateServiceFunction(MS_CLIST_REMOVEGROUPMENUITEM,RemoveGroupMenuItem); CreateServiceFunction(MS_CLIST_MENUBUILDGROUP,BuildGroupMenu); ModernHookEvent(ME_CLIST_PREBUILDGROUPMENU,OnBuildGroupMenu); InitSubGroupMenus(); //Group menu memset(&tmp,0,sizeof(tmp)); tmp.cbSize=sizeof(tmp); tmp.CheckService=NULL; tmp.ExecService="CLISTMENUSGroup/ExecService"; tmp.name=LPGEN("GroupMenu"); hGroupMenuObject=(HANDLE)CallService(MO_CREATENEWMENUOBJECT,(WPARAM)0,(LPARAM)&tmp); op.Handle=hGroupMenuObject; op.Setting=OPT_USERDEFINEDITEMS; op.Value=TRUE; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); op.Handle=hGroupMenuObject; op.Setting=OPT_MENUOBJECT_SET_FREE_SERVICE; op.Value=(INT_PTR)"CLISTMENUSGroup/FreeOwnerDataGroupMenu"; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); op.Handle=hGroupMenuObject; op.Setting=OPT_MENUOBJECT_SET_ONADD_SERVICE; op.Value=(INT_PTR)"CLISTMENUSGroup/GroupMenuonAddService"; CallService(MO_SETOPTIONSMENUOBJECT,(WPARAM)0,(LPARAM)&op); { //add exit command to menu CLISTMENUITEM mi; GroupMenuParam gmp; memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=1900000; mi.pszService="CloseAction"; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_EXIT); mi.pszName=LPGEN("E&xit"); mi.flags=CMIF_ICONFROMICOLIB; AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=500; mi.pszService=MS_CLIST_SHOWHIDE; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_SHOWHIDE); mi.pszName=LPGEN("&Hide/Show"); mi.flags=CMIF_ICONFROMICOLIB; hHideShowMainMenuItem=(HANDLE)AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=200000; mi.flags=CMIF_ICONFROMICOLIB; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_FINDUSER); mi.pszService="FindAdd/FindAddCommand"; mi.pszName=LPGEN("&Find/Add Contacts..."); AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=300000; mi.pszService=""; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_MAINMENU); // eternity #004 mi.pszName=LPGEN("&Main Menu"); mi.flags=CMIF_ICONFROMICOLIB; // eternity #004 hGroupMainMenuItemProxy=(HANDLE)AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); // eternity #004 memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=300100; mi.pszService=""; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_STATUS); // eternity #004 mi.pszName=LPGEN("&Status"); mi.flags=CMIF_ICONFROMICOLIB; // eternity #004 hGroupStatusMenuItemProxy=(HANDLE)AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); // eternity #004 memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=400000; mi.flags=CMIF_ICONFROMICOLIB; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_OPTIONS); mi.pszService="Options/OptionsCommand"; mi.pszName=LPGEN("&Options..."); AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=500000; mi.flags=CMIF_ICONFROMICOLIB; mi.icolibItem=LoadSkinnedIconHandle(SKINICON_OTHER_MIRANDA); mi.pszService="Help/AboutCommand"; mi.pszName=LPGEN("&About"); AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=100000; mi.hIcon=ske_ImageList_GetIcon(hCListImages,NewGroupIconidx,0); mi.pszService=MS_CLIST_GROUPCREATE; mi.pszName=LPGEN("&New Group"); hNewGroupMenuItem=(HANDLE)AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); DestroyIcon_protect(mi.hIcon); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=100001; mi.hIcon=NULL; mi.pszService=MS_CLIST_SETHIDEOFFLINE; mi.pszName=LPGEN("&Hide Offline Users"); gmp.lParam=0;gmp.wParam=-1; hHideOfflineUsersMenuItem=(HANDLE)AddGroupMenuItem((WPARAM)&gmp,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=100002; mi.hIcon=NULL; mi.pszService="CLISTMENUSGroup/HideOfflineRootHelper"; mi.pszName=LPGEN("Hide &Offline Users out here"); hHideOfflineUsersOutHereMenuItem=(HANDLE)AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=100003; mi.hIcon=NULL; mi.pszService="CLISTMENUSGroup/HideGroupsHelper"; mi.pszName=LPGEN("Hide &Empty Groups"); hHideEmptyGroupsMenuItem=(HANDLE)AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); memset(&mi,0,sizeof(mi)); mi.cbSize=sizeof(mi); mi.position=100004; mi.hIcon=NULL; mi.pszService="CLISTMENUSGroup/UseGroupsHelper"; mi.pszName=LPGEN("Disable &Groups"); hDisableGroupsMenuItem=(HANDLE)AddGroupMenuItem((WPARAM)0,(LPARAM)&mi); ModernHookEvent(ME_SKIN2_ICONSCHANGED,OnIconLibIconChanged); //MS_CLIST_GROUPCREATE }; }