//wparam=MenuObjectHandle //lparam=vKey int MO_ProcessHotKeys(WPARAM wParam,LPARAM lParam) { int objidx;//pos in array PMO_IntMenuItem pimi; int i; int vKey=(int)lParam; if (!isGenMenuInited) return -1; lockmo(); objidx=GetMenuObjbyId((int)wParam); if (objidx==-1){unlockmo();return(FALSE);} for(i=0;i<MenuObjects[objidx].MenuItemsCount;i++) { pimi=&MenuObjects[objidx].MenuItems[i]; if (pimi->mi.hotKey==0) continue; if (HIWORD(pimi->mi.hotKey)!=vKey) continue; if (!(LOWORD(pimi->mi.hotKey)&MOD_ALT)!=!(GetKeyState(VK_MENU)&0x8000)) continue; if (!(LOWORD(pimi->mi.hotKey)&MOD_CONTROL)!=!(GetKeyState(VK_CONTROL)&0x8000)) continue; if (!(LOWORD(pimi->mi.hotKey)&MOD_SHIFT)!=!(GetKeyState(VK_SHIFT)&0x8000)) continue; MO_ProcessCommand((WPARAM)getGlobalId(MenuObjects[objidx].id,pimi->id),(LPARAM)0); unlockmo(); return TRUE; } unlockmo(); return(FALSE); }
bullet* newBullet(){ if (bullet_num>=bullet_max) return 0; if ((bullet_array[bullet_num]=malloc(sizeof(bullet)))==0){ perror("newBullet bullet malloc"); return 0; } memset(bullet_array[bullet_num],0,sizeof(bullet)); bullet_array[bullet_num]->id=getGlobalId(); do{ int *index; if ((index=malloc(sizeof(*index)))==0){ perror("newBullet index malloc"); break; } *index=bullet_num; // printf("%d newNpc index %d added %d\n",npc_array[npc_num]->id, npc_num,*index); if (bintreeAdd(&bullet_tree, bullet_array[bullet_num]->id, index)==0){ perror("newBullet bintreeAdd malloc"); break; } bullet_num++; return bullet_array[bullet_num-1]; }while(0); delBullet(0, bullet_array[bullet_num]); return 0; }
int RecursiveRemoveChilds(int pos,ListParam *param) { ListParam localparam; int rootid; int i=0; int menuitemid;//id int objidx;//pos in array int *MenuItemsCount; PMO_IntMenuItem *MenuItems=NULL; objidx=GetMenuObjbyId(param->MenuObjectHandle); if ((objidx==-1)){return(-1);} localparam=*param; //rootid=(*param->MenuItems)[pos].id|param->cntFlag; rootid=getGlobalId(MenuObjects[objidx].id,MenuObjects[objidx].MenuItems[pos].id); menuitemid=MenuObjects[objidx].MenuItems[pos].id; MenuItems=&MenuObjects[objidx].MenuItems; MenuItemsCount=&MenuObjects[objidx].MenuItemsCount; if ((*MenuItems)[pos].mi.flags&CMIF_ROOTPOPUP) { while(i<*MenuItemsCount) { if ((*MenuItems)[i].mi.root!=rootid||(*MenuItems)[i].mi.root==-1) { i++; continue; } if ((*MenuItems)[i].mi.flags&CMIF_ROOTPOPUP) { RecursiveRemoveChilds(i,&localparam); i=0; continue; } if ((*MenuItems)[i].mi.flags&CMIF_CHILDPOPUP) { FreeAndNil(&((*MenuItems)[i].mi.pszName)); FreeAndNil(&((*MenuItems)[i].CustomName)); FreeAndNil(&((*MenuItems)[i].UniqName)); if (MenuObjects[objidx].FreeService) CallService(MenuObjects[objidx].FreeService,(WPARAM)(*MenuItems)[i].globalid,(LPARAM)(*MenuItems)[i].mi.ownerdata); RemoveFromList(i,(void **)MenuItems,MenuItemsCount,sizeof(TMO_IntMenuItem)); i=0; continue; } } } i = GetMenuItembyId( objidx, menuitemid ); if ( i >= 0 && i < *MenuItemsCount ) { FreeAndNil(&((*MenuItems)[i].mi.pszName)); FreeAndNil(&((*MenuItems)[i].CustomName)); FreeAndNil(&((*MenuItems)[i].UniqName)); if (MenuObjects[objidx].FreeService) CallService(MenuObjects[objidx].FreeService,(WPARAM)(*MenuItems)[i].globalid,(LPARAM)(*MenuItems)[i].mi.ownerdata); RemoveFromList(i,(void **)MenuItems,MenuItemsCount,sizeof(TMO_IntMenuItem)); } return 0; }
//wparam=MenuObjectHandle //lparam=PMO_MenuItem int MO_AddOldNewMenuItem(WPARAM wParam,LPARAM lParam) { PMO_MenuItem pmi=(PMO_MenuItem)lParam; int objidx; int oldroot,i; if (!isGenMenuInited) return -1; if (pmi==NULL){return(-1);} objidx=GetMenuObjbyId(wParam); if (objidx==-1){return(-1);} if (pmi->cbSize!=sizeof(TMO_MenuItem)) return 0; if ((pmi->flags&CMIF_ROOTPOPUP||pmi->flags&CMIF_CHILDPOPUP)) {return(0);} //is item with popup or not if (pmi->root==0) { //yes,this without popup pmi->root=-1;//first level } else { //no,search for needed root and create it if need TCHAR* tszRoot = ( TCHAR* )CallService( MS_LANGPACK_PCHARTOTCHAR, 0, (LPARAM)pmi->root ); oldroot=-1; for(i=0;i<MenuObjects[objidx].MenuItemsCount;i++) { TMO_IntMenuItem *p = &MenuObjects[objidx].MenuItems[i]; if ( p->mi.pszName == NULL ) continue; if (( p->mi.flags & CMIF_ROOTPOPUP) && !_tcscmp( p->mi.pszName, tszRoot)) { oldroot = getGlobalId( MenuObjects[objidx].id, p->id ); break; } } mir_free( tszRoot ); if (oldroot==-1) { //not found,creating root TMO_MenuItem tmi; ZeroMemory(&tmi,sizeof(tmi)); tmi=*(PMO_MenuItem)lParam; tmi.flags|=CMIF_ROOTPOPUP; tmi.ownerdata=0; tmi.root=-1; //copy pszPopupName tmi.pszName=(TCHAR*)pmi->root; oldroot=MO_AddNewMenuItem(wParam,(LPARAM)&tmi); } pmi->root=oldroot; //popup will be created in next commands } pmi->flags|=CMIF_CHILDPOPUP; //add popup(root allready exists) return(MO_AddNewMenuItem(wParam,(LPARAM)pmi)); }
tower* newTower(){ if (tower_num==tower_max) return 0; if ((tower_array[tower_num]=malloc(sizeof(tower)))==0) return 0; memset(tower_array[tower_num],0,sizeof(tower)); tower_array[tower_num]->id=getGlobalId(); tower_num++; return tower_array[tower_num-1]; }
/** Map * @param mapping Description of the param. * @return void */ void PlainDictionary::updateIDs() { unsigned int i; for (i = 0; i < shared.size(); i++) { shared[i]->id = getGlobalId(i, SHARED_SUBJECT); } for (i = 0; i < subjects.size(); i++) { subjects[i]->id = getGlobalId(i, NOT_SHARED_SUBJECT); } for (i = 0; i < objects.size(); i++) { objects[i]->id = getGlobalId(i, NOT_SHARED_OBJECT); } for (i = 0; i < predicates.size(); i++) { predicates[i]->id = getGlobalId(i, NOT_SHARED_PREDICATE); } }
//wparam=MenuObjectHandle //lparam=PMO_MenuItem //return MenuItemHandle int MO_AddNewMenuItem(WPARAM wParam,LPARAM lParam) { PMO_MenuItem pmi=(PMO_MenuItem)lParam; int objidx,menuobjecthandle; int miidx,result; int res; if (!isGenMenuInited) return -1; if (pmi==NULL){return(-1);} lockmo(); menuobjecthandle=wParam; objidx=GetMenuObjbyId(menuobjecthandle); if (objidx==-1){unlockmo();return(-1);} if (pmi->cbSize!=sizeof(TMO_MenuItem)) {unlockmo();return -1;} if (!(pmi->flags&CMIF_ROOTPOPUP||pmi->flags&CMIF_CHILDPOPUP)){ //old mode unlockmo(); res=(int)MO_AddOldNewMenuItem(wParam,lParam); return(res); } MenuObjects[objidx].MenuItems=(PMO_IntMenuItem)mir_realloc(MenuObjects[objidx].MenuItems,sizeof(TMO_IntMenuItem)*(MenuObjects[objidx].MenuItemsCount+1)); miidx=MenuObjects[objidx].MenuItemsCount; ZeroMemory(&MenuObjects[objidx].MenuItems[miidx],sizeof(MenuObjects[objidx].MenuItems[miidx])); MenuObjects[objidx].MenuItems[miidx].id=NextObjectMenuItemId++; MenuObjects[objidx].MenuItems[miidx].globalid=getGlobalId(menuobjecthandle,MenuObjects[objidx].MenuItems[miidx].id); MenuObjects[objidx].MenuItems[miidx].mi=*pmi; MenuObjects[objidx].MenuItems[miidx].mi.pszName = (TCHAR*)CallService( MS_LANGPACK_PCHARTOTCHAR,0,(LPARAM)pmi->pszName); MenuObjects[objidx].MenuItems[miidx].iconId=-1; MenuObjects[objidx].MenuItems[miidx].OverrideShow=TRUE; MenuObjects[objidx].MenuItems[miidx].IconRegistred=FALSE; if (pmi->hIcon!=NULL) MenuObjects[objidx].MenuItems[miidx].iconId=ImageList_AddIcon(MenuObjects[objidx].hMenuIcons,pmi->hIcon); result=getGlobalId(wParam,MenuObjects[objidx].MenuItems[miidx].id); MenuObjects[objidx].MenuItemsCount++; unlockmo(); return(result); }
void DocumentId::print(std::ostream& out, bool verbose, const std::string& indent) const { (void) indent; if (verbose) { out << "DocumentId(id = "; } out << _id->toString().c_str(); if (verbose) { out << ", " << getGlobalId().toString() << ")"; } }
unsigned int FourSectionDictionary::stringToId(std::string &key, TripleComponentRole position) { unsigned int ret; if(key.length()==0) { return 0; } switch (position) { case SUBJECT: ret = shared->locate((const unsigned char *)key.c_str(), key.length()); if( ret != 0) { return getGlobalId(ret,SHARED_SUBJECT); } ret = subjects->locate((const unsigned char *)key.c_str(), key.length()); if(ret != 0) { return getGlobalId(ret,NOT_SHARED_SUBJECT); } return 0; case PREDICATE: ret = predicates->locate((const unsigned char *)key.c_str(), key.length()); if(ret!=0) { return getGlobalId(ret, NOT_SHARED_PREDICATE); } return 0; case OBJECT: ret = shared->locate((const unsigned char *)key.c_str(), key.length()); if( ret != 0) { return getGlobalId(ret,SHARED_OBJECT); } ret = objects->locate((const unsigned char *)key.c_str(), key.length()); if(ret != 0) { return getGlobalId(ret,NOT_SHARED_OBJECT); } return 0; } return 0; }
//LOWORD(wparam) menuident int MO_ProcessCommandByMenuIdent(WPARAM wParam,LPARAM lParam) { int i,j; if (!isGenMenuInited) return -1; lockmo(); for (i=0;i<MenuObjectsCount;i++) { for (j=0;j<MenuObjects[i].MenuItemsCount;j++) { if (MenuObjects[i].MenuItems[j].id==(int)wParam) { int globid; globid=getGlobalId(MenuObjects[i].id,MenuObjects[i].MenuItems[j].id); unlockmo(); return(MO_ProcessCommand(globid,lParam)); } } } unlockmo(); return(FALSE); }
HMENU BuildRecursiveMenu(HMENU hMenu,ListParam *param) { int i,j; MENUITEMINFO mii; PMO_MenuItem mi; HMENU hSubMenu; ListParam localparam; TCheckProcParam CheckParam; //PIntMenuObject pimo=NULL; int pimoidx; PMO_IntMenuItem MenuItems=NULL; int rootlevel; // int cntFlag; int MenuItemsCount; char *checkproc=NULL; char *onAddproc=NULL; char MenuNameItems[256]; if (param==NULL) return(NULL); pimoidx=GetMenuObjbyId(param->MenuObjectHandle); if (pimoidx==-1){return(NULL);} //pimo=&MenuObjects[pimoidx]; MenuItems=MenuObjects[pimoidx].MenuItems; MenuItemsCount=MenuObjects[pimoidx].MenuItemsCount; rootlevel=param->rootlevel; //cntFlag=param->cntFlag; checkproc=MenuObjects[pimoidx].CheckService; onAddproc=MenuObjects[pimoidx].onAddService; localparam=*param; wsprintfA(MenuNameItems, "%s_Items", MenuObjects[pimoidx].Name); /* while((rootlevel==-1)&&(GetMenuItemCount(hMenu)>(param->cntFlag==MENU_CUSTOMITEMMAIN?1:0)) ) DeleteMenu(hMenu,0,MF_BYPOSITION); */ while((rootlevel==-1)&&GetMenuItemCount(hMenu)>0) DeleteMenu(hMenu,0,MF_BYPOSITION); for(j=0;j<MenuItemsCount;j++) { mi=&(MenuItems[j].mi); if (mi->cbSize!=sizeof(TMO_MenuItem)) continue; // // RegisterOneIcon(pimoidx,j); if (checkproc!=NULL) { CheckParam.lParam=param->lParam; CheckParam.wParam=param->wParam; CheckParam.MenuItemOwnerData=mi->ownerdata; CheckParam.MenuItemHandle=getGlobalId(param->MenuObjectHandle,MenuItems[j].id); if (CallService(checkproc,(WPARAM)&CheckParam,(LPARAM)0)==FALSE) continue; } /**************************************/ if (rootlevel==-1&&mi->root==-1&&MenuObjects[pimoidx].bUseUserDefinedItems) { char menuItemName[256]; char DBString[256]; DBVARIANT dbv; memset(&dbv,0,sizeof(dbv)); GetMenuItemName( &MenuItems[j], menuItemName, sizeof(menuItemName)); // check if it visible wsprintfA(DBString, "%s_visible", menuItemName); if (DBGetContactSettingByte(NULL, MenuNameItems, DBString, -1)==-1) DBWriteContactSettingByte(NULL,MenuNameItems, DBString,1); MenuItems[j].OverrideShow=TRUE; if (!DBGetContactSettingByte(NULL, MenuNameItems, DBString, 1)) { MenuItems[j].OverrideShow=FALSE; continue; // find out what value to return if not getting added } // mi.pszName wsprintfA(DBString, "%s_name", menuItemName); if (!DBGetContactSettingTString(NULL, MenuNameItems, DBString, &dbv)) { if (_tcslen(dbv.ptszVal)>0) { if (MenuItems[j].CustomName) mir_free(MenuItems[j].CustomName); MenuItems[j].CustomName=mir_tstrdup(dbv.ptszVal); } if (dbv.ptszVal) mir_free(dbv.ptszVal); } wsprintfA(DBString, "%s_pos", menuItemName); if (DBGetContactSettingDword(NULL, MenuNameItems, DBString, -1)==-1) DBWriteContactSettingDword(NULL,MenuNameItems, DBString,mi->position); mi->position = DBGetContactSettingDword(NULL, MenuNameItems, DBString, mi->position); } /**************************************/ ZeroMemory(&mii,sizeof(mii)); i=0; //hMenu=hMainMenu; mii.cbSize=MENUITEMINFO_V4_SIZE; mii.fMask=MIIM_SUBMENU|MIIM_TYPE|MIIM_DATA; mii.dwItemData=getGlobalId(param->MenuObjectHandle,MenuItems[j].id); hSubMenu=NULL; if (rootlevel!=(int)MenuItems[j].mi.root) continue; if ((MenuItems[j].mi.flags&CMIF_CHILDPOPUP)||(MenuItems[j].mi.flags&CMIF_ROOTPOPUP)) { if (rootlevel==(int)MenuItems[j].mi.root) { //our level if (MenuItems[j].mi.flags&CMIF_ROOTPOPUP) { i=WhereToPlace(hMenu,mi,&mii,&localparam); if (!IsWinVer98Plus()) { mii.cbSize=MENUITEMINFO_V4_SIZE; mii.fMask=MIIM_DATA|MIIM_TYPE|MIIM_ID|MIIM_SUBMENU; } else { mii.cbSize=sizeof(mii); mii.fMask=MIIM_DATA|MIIM_ID|MIIM_STRING|MIIM_SUBMENU; if (MenuItems[j].iconId!=-1) mii.fMask|=MIIM_BITMAP; } mii.fType=MFT_STRING; //mii.dwItemData=getGlobalId(param->MenuObjectHandle,MenuItems[j].id); mii.dwItemData=MenuItems[j].globalid; hSubMenu=CreatePopupMenu(); mii.hSubMenu=hSubMenu; mii.hbmpItem=HBMMENU_CALLBACK; mii.dwTypeData=(MenuItems[j].CustomName)?(MenuItems[j].CustomName):(mi->pszName); #ifdef PUTPOSITIONSONMENU if (GetKeyState(VK_CONTROL)&0x8000) { TCHAR str[256]; mir_sntprintf(str,SIZEOF(str),_T("%s (%d,id %x)"),mi->pszName,mi->position,mii.dwItemData); mii.dwTypeData=str; } #endif InsertMenuItemWithSeparators(hMenu,i,TRUE,&mii,&localparam); localparam.rootlevel=getGlobalId(param->MenuObjectHandle,MenuItems[j].id);//MenuItems[j].id|cntFlag; BuildRecursiveMenu(hSubMenu,&localparam); continue; } i=WhereToPlace(hMenu,mi,&mii,&localparam); if (!IsWinVer98Plus()) { mii.cbSize=MENUITEMINFO_V4_SIZE; mii.fMask=MIIM_DATA|MIIM_TYPE|MIIM_ID|MIIM_STATE; } else { mii.cbSize=sizeof(mii); mii.fMask=MIIM_DATA|MIIM_ID|MIIM_STRING|MIIM_STATE; if (MenuItems[j].iconId!=-1) mii.fMask|=MIIM_BITMAP; } mii.fState=((MenuItems[j].mi.flags&CMIF_GRAYED)?MFS_GRAYED:MFS_ENABLED); mii.fState|=((MenuItems[j].mi.flags&CMIF_CHECKED)?MFS_CHECKED:MFS_UNCHECKED); mii.fType=MFT_STRING; mii.wID=MenuItems[j].id; //mii.dwItemData=getGlobalId(param->MenuObjectHandle,MenuItems[j].id);//MenuItems[j].id|cntFlag; mii.dwItemData=MenuItems[j].globalid; mii.hbmpItem=HBMMENU_CALLBACK; mii.dwTypeData=(MenuItems[j].CustomName)?(MenuItems[j].CustomName):(mi->pszName); #ifdef PUTPOSITIONSONMENU if (GetKeyState(VK_CONTROL)&0x8000) { TCHAR str[256]; mir_sntprintf( str, SIZEOF(str), _T("%s (%d,id %x)"),mi->pszName,mi->position,mii.dwItemData); mii.dwTypeData=str; } #endif if (onAddproc!=NULL) if (CallService(onAddproc,(WPARAM)&mii,(LPARAM)MenuItems[j].globalid)==FALSE) continue; InsertMenuItemWithSeparators(hMenu,i,TRUE,&mii,&localparam); continue; } } else { //old items - not needed if (rootlevel==-1) { } } } return hMenu; }
unsigned int FourSectionDictionary::getGlobalId(unsigned int id, DictionarySection position) { return getGlobalId(this->mapping, id, position); }