m_topo.cpp:
void TTopographySetParam::Dlg_OnCommand(HWND hwnd,int id,HWND hwndCtl,UINT codeNotify) { char buf[MaxString]; float valuef; int idx; switch(id) { //##Darzustellenden Werte fuer Einstellungen Topographie Fenster //##wird vor Fensterdarstellung ausgefuehrt bzw. wenn die Motorauswahl //##geaendert wurde case cm_ParamSet: ComboBox_SelectString(hMotorList,0,mGetAxisName()); ComboBox_SelectString(hDeviceList,0,Device->Characteristic); SetDlgItemText(GetHandle(),id_Unit,mGetAxisUnit()); //##SetFocus funktioniert nicht, "verbiegt" aber handel, //##so dass getHandle in Folge fehlerhaften Wert liefert //## //##SetFocus(GetDlgItem(GetHandle(),IDCANCEL)); valuef = Topography.fWorkPoint*100; if(Topography.bSmallAngleSide) valuef *= -1.0; sprintf(buf,"%.1f",valuef); SetDlgItemText(GetHandle(),id_WorkPoint,buf); SetDlgItemInt(GetHandle(),id_Shots,Topography.nNumberCycle,FALSE); sprintf(buf,"%.1f",Topography.fMaxAngleEscape); SetDlgItemText(GetHandle(),id_MaxAngleEscape,buf); // Schrittweite beim Regeln sprintf(buf,mGetSF(),Topography.fControlStep); SetDlgItemText(GetHandle(),id_ControlStep,buf); sprintf(buf,mGetSF(),Topography.fMoveStep); SetDlgItemText(GetHandle(),id_MoveStep,buf); sprintf(buf,"%.1f",Topography.fControlRange*100); SetDlgItemText(GetHandle(),id_ControlRange,buf); sprintf(buf,"%.1f",Topography.fMaxTime); SetDlgItemText(GetHandle(),id_MaxTime,buf); sprintf(buf,"%.d",(int)(Topography.lMeasurementTime/60l)); SetDlgItemText(GetHandle(),id_MeasurementTime,buf); sprintf(buf,"%lu",Topography.dwMaxCounts); SetDlgItemText(GetHandle(),id_MaxCounts,buf); CheckDlgButton(GetHandle(),id_MultibleShot,Topography.bMultibleShot); sprintf(buf,"%.1f",Topography.fAngleBetweenShots); SetDlgItemText(GetHandle(),id_StepWidth,buf); sprintf(buf,"%.1f",Topography.dStartAngle); SetDlgItemText(GetHandle(),id_From,buf); //##Falls Fenster von Topographie Ausfuehren aufgerufen wird //## nRestriction == true, vom Hauptmenue aus nRestriction == false //##-> Einfluss auf Aktivierung von Eingabefeldern if(!nRestrictions) { EnableWindow(GetDlgItem(GetHandle(),id_Shots),Topography.bMultibleShot); EnableWindow(GetDlgItem(GetHandle(),id_From),Topography.bMultibleShot); EnableWindow(GetDlgItem(GetHandle(),id_StepWidth),Topography.bMultibleShot); EnableWindow(GetDlgItem(GetHandle(),id_WorkPoint),!Topography.bMultibleShot); EnableWindow(GetDlgItem(GetHandle(),id_ControlRange),!Topography.bMultibleShot); } break; case id_ChooseMotor: switch(codeNotify) { case CBN_SELCHANGE: idx = ComboBox_GetCurSel(hMotorList); if((nMotor != idx) && (idx != CB_ERR)) { mlSetAxis(idx); nMotor = mlGetAxis(); FORWARD_WM_COMMAND(hwnd,cm_ParamSet,0,0,SendMessage); } } break; case id_ChooseDevice: switch(codeNotify) { case CBN_SELCHANGE: idx = ComboBox_GetCurSel(hDeviceList); if((Device != lpDList->DP(idx)) && (idx != CB_ERR)) { Device = lpDList->DP(idx); FORWARD_WM_COMMAND(hwnd,cm_ParamSet,0,0,SendMessage); } } break; //##Zu Zeit nicht genutzt (ehemals gab es neben der Motorauswahl-Box //##Schalter, mit dem sich die Auswahl rotieren lassen sollte) case cm_RotateMotor: mlSetAxis(nMotor+1); nMotor = mlGetAxis(); FORWARD_WM_COMMAND(hwnd,cm_ParamSet,0,0,SendMessage); break; //##Aktivieren bzw. Deaktivieren der Mehrfachbelichtungs Checkbox //##Bei Aktivierung: //##Eingabefelder im Bereich Mehrfachbelichtung werden aktiviert //##Arbeitspunkt Lage und Belichtungsregelung Bereich deaktiviert //##Bei Deaktivierung entsprechend umgekehrte Aktivierung/Deaktivierung //##der Eingabefelder case id_MultibleShot: Topography.bMultibleShot = IsDlgButtonChecked(GetHandle(),id_MultibleShot); EnableWindow(GetDlgItem(GetHandle(),id_Shots),Topography.bMultibleShot); EnableWindow(GetDlgItem(GetHandle(),id_From),Topography.bMultibleShot); EnableWindow(GetDlgItem(GetHandle(),id_StepWidth),Topography.bMultibleShot); EnableWindow(GetDlgItem(GetHandle(),id_WorkPoint),!Topography.bMultibleShot); EnableWindow(GetDlgItem(GetHandle(),id_ControlRange),!Topography.bMultibleShot); break; default: TModalDlg::Dlg_OnCommand(hwnd,id,hwndCtl,codeNotify); } };
m_steerg.cpp:
TCCode TControlFlankCmd::FirstStep(void) { // Feststellen, ob die gewählten Parameter konsistent sind //##setzt Steuercode auf ControlStep eStep = CControlStep; //##aktuellen Intensitaetswert aus fIncomingIntensity auslesen //##fIncomingIntensity wird mit jedem TSteering::DeviceRequest //##aktualisiert fIntensity[0] = Steering.GetIntensity(); //##aktuelle Motorposition ruft mGetValue(Distance) dDistance[0] = Steering.GetDistance(); fSearchIntensity = fIntensity[0]; Steering.dStartPoint = dDistance[0]; // Mess-Zeit, Start-Intensitaet und Regel-Bereich //##? Hier steht nichts von Messzeit! fMinIntensity = fSearchIntensity * (1.0 - fControlRange / 2.0); fMaxIntensity = fSearchIntensity * (1.0 + fControlRange / 2.0); fIntensityRange = (fMaxIntensity - fMinIntensity) / 2.0; //##Rueckgabe des Commando_Steuercodes CMeasure return CMeasure; };