#include "common.h" #include "menu.h" #include "resource.h" HANDLE hMenuMain = 0, hServiceMenuMain = 0; int MainMenuService(WPARAM wParam, LPARAM lParam) { // TODO: add code here that executes when the menu item is chosen // e.g. modify main menu item - see m_clist.h //CLISTMENUITEM menu = {0}; //menu.cbSize=sizeof(menu); //menu.flags = CMIM_NAME | CMIF_TCHAR; //menu.ptszName = (char *)TranslateT("Changed menu text"); //CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuMain, (LPARAM)&menu); return 0; } HANDLE hMenuContact = 0, hServiceMenuContact = 0, hEventMenuBuild = 0; int ContactMenuService(WPARAM wParam, LPARAM lParam) { HANDLE hContact = (HANDLE)wParam; // TODO: add code here that executes when the menu item is chosen // e.g. you could modify the menu item here - see below return 0; } // this function is called when the contact's menu is about to be shown - you can e.g. // modify the menu here using the MS_CLIST_MODIFYMENUITEM service int PrebuildContactMenu(WPARAM wParam, LPARAM lParam) { HANDLE hContact = (HANDLE)wParam; // TODO: add code here that executes when the menu is constructed // e.g. modify menu item - see m_clist.h //CLISTMENUITEM menu = {0}; //menu.cbSize=sizeof(menu); //menu.flags = CMIM_NAME | CMIF_TCHAR; //menu.ptszName = (char *)TranslateT("Changed menu text"); //CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenuContact, (LPARAM)&menu); return 0; } void InitMenu() { CLISTMENUITEM menu = {0}; menu.cbSize=sizeof(menu); char buff[512]; menu.flags = CMIM_ALL | CMIF_TCHAR; menu.hIcon = (HICON)LoadImage(hInst, MAKEINTRESOURCE(IDI_MYSPACE), IMAGE_ICON, 0, 0, 0); hServiceMenuMain = CreateProtoServiceFunction(MODULE, "/MainMenu", MainMenuService); menu.ptszName = TranslateTS(MODULE); mir_snprintf(buff, 512, "%s%s", MODULE, "/MainMenu"); menu.pszService = buff; menu.position = 0; hMenuMain = (HANDLE)CallService(MS_CLIST_ADDMAINMENUITEM,0,(LPARAM)&menu); // contact menu item hServiceMenuContact = CreateProtoServiceFunction(MODULE, "/ContactMenu", ContactMenuService); menu.ptszName = TranslateTS(MODULE); mir_snprintf(buff, 512, "%s%s", MODULE, "/ContactMenu"); menu.pszService = buff; menu.position = 0; menu.flags = CMIF_NOTOFFLINE; // only show for not-offline contacts hMenuContact = (HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&menu); hEventMenuBuild = HookEvent(ME_CLIST_PREBUILDCONTACTMENU, PrebuildContactMenu); } void DeinitMenu() { UnhookEvent(hEventMenuBuild); DestroyServiceFunction(hServiceMenuContact); DestroyServiceFunction(hServiceMenuMain); }