int TSteering::StartCmdExecution( TCmdTag Cmd ) { // Function tested; Last changes 950814 if (TheCmd) { // eventuell vorhandenes vorhergehendes Befehls-Objekt zerstören // (Destruktor wird gerufen) delete TheCmd; TheCmd = NULL; } // Messtimer des Detektors stoppen (s. counters.cpp) Device->MeasureStop(); // Aufruf bewirkt "hControlWnd = hControlWnd" (!?) Device->SetHost( hControlWnd ); fIntensityNorm = 0.0; nFailureId = 0; bInterrupted = FALSE; switch (Cmd.Id) { case GotoPeak: // neues Objekt vom Typ TGotoPeakCmd erstellen // TGotoPeakCmd ist vom TCmd abgeleitet TheCmd = (TGotoPeakCmd*)new TGotoPeakCmd( Cmd ); break; case GotoIntensity: // s.o. TheCmd = (TGotoIntensityCmd*)new TGotoIntensityCmd( Cmd ); break; case ChooseAxis: TheCmd = (TChooseAxisCmd*)new TChooseAxisCmd( Cmd ); break; case ChooseDevice: TheCmd = (TChooseDeviceCmd*)new TChooseDeviceCmd( Cmd ); break; case SetupScan: TheCmd = (TSetupScanCmd*)new TSetupScanCmd( Cmd ); break; case SetWidth: TheCmd = (TSetWidthCmd*)new TSetWidthCmd( Cmd ); break; case Scan: TheCmd = (TScanCmd*)new TScanCmd( Cmd ); break; case ControlFlank: TheCmd = (TControlFlankCmd*)new TControlFlankCmd( Cmd ); break; case ShowValue: TheCmd = (TShowValueCmd*)new TShowValueCmd( Cmd ); break; case SetFileName: TheCmd = (TSetFileNameCmd*)new TSetFileNameCmd( Cmd ); break; case SaveData: TheCmd = (TSaveDataCmd*)new TSaveDataCmd( Cmd ); break; case Calculate: TheCmd = (TCalculateCmd*)new TCalculateCmd( Cmd ); break; case LoadPoint: TheCmd = (TLoadPointCmd*)new TLoadPointCmd( Cmd ); break; case MoveToPoint: TheCmd = (TMoveToPointCmd*)new TMoveToPointCmd( Cmd ); break; case AreaScan: TheCmd = (TAreaScanCmd*)new TAreaScanCmd( Cmd ); break; default: return FALSE; } if (!TheCmd->nFailureId) { // Kein Fehler passiert // Steuerung ist aktiv bSteeringActive = TRUE; // Wecktimer starten StartTimer( 0 ); return TRUE; } return FALSE; };
Zusätzlich existiert die folgende Funktion, die ihre Parameter in eine TCmdTag-Struktur übernimmt und danach die obige Funktion damit aufruft.
int TSteering::StartCmdExecution( TCmdId cmdid, int p1, int p2, LPSTR p3, HWND host ) { TCmdTag ct; hHostWindow = host; ct.Id = cmdid; ct.P1 = (TCParam) p1; ct.P2 = (TCParam) p2; strcpy( ct.P3, p3 ); return StartCmdExecution( ct ); }
Zurück zu StartMacroExecution()