int CheckAndDispatchKeyboardMessage(int ActiveMenue, char FKey, char SKey) { int OKFlag = 0; int PullDownSub, PopUpSub, ActiveSymbol, Counter; unsigned int SelectItemCode; switch(FKey) { case 0: OKFlag = ExtendedASCIIKey(ActiveMenue, SKey); //Deals with user menu activities break; case BACKSPACE: // For swinking an active shape ; //ChangeShapeSize(False, ActiveShape, 5); break; case TAB: //For moving through a set of shapes in sequence ; // Select next shape object in user document and update document view break; case 13: //Place this control logic in a single function and call function instead if(PopUpActive) { OKFlag = DispatchPopUpfunction(); //Use other dispatching function instead PopUpActive = 0; PopUpPtr->SetActiveFlag(False); } else if(PullDownActive) { PullDownSub = PullDownPtr->GiveActiveItem(); SelectItemCode = PullDownPtr->GiveItemCode(PullDownSub); ClearAllActiveMenues(); PullDownActive = 0; OKFlag = DispachFunctionCall(SelectItemCode); } else if(MainGlbSymbolPtr1->GiveActivity()) { PullDownActive = MainGlbSymbolPtr1->GiveActiveItem(); MenuFile[PullDownActive].Active = True; DrawActivePullDown(PullDownActive, 1); } break; case ' ': // space bar press. The user wants to increase the size of a (the active) shape if(ActiveSymbol > -1) ; // ChangeShapeSize(True, ActiveShape, 4); break; case CANCEL: if(PopUpActive) { PopUpPtr->ClearMenu(); MenuFile[PopUpActive].Active = False; PopUpActive = 0; PopUpPtr->SetActiveFlag(False); } else if(PullDownActive) { Counter = MainGlbSymbolPtr1>GiveActiveItem(); MenuFile[Counter].Active = False; Counter--; if(Counter < 1) Counter = MainGlbSymbolPtr->GiveNumberMenueItems(); MainGlbSymbolPtr->UnhiglightActiveItem( ); MainGlbSymbolPtr->SetActiveItem(Counter); MainGlbSymbolPtr->HiglightActiveItem(RED, YELLOW); PullDownActive = 0; PullDownPtr->ClearMenu(); UpdateDocumentView(); // Can be sent as a message from a menu object } // to a document object else if(MainGlbSymbolPtr->GiveActivity()) { Counter = MainGlbSymbolPtr1->GiveActiveItem(); Counter--; if(Counter < 1) Counter = MainGlbSymbolPtr->GiveNumberMenueItems(); MainGlbSymbolPtr->UnhiglightActiveItem(); MainGlbSymbolPtr->SetActiveItem(Counter); MainGlbSymbolPtr->HiglightActiveItem(RED, YELLOW); } break; default: ; break; } return(OKFlag); }