Quellcode Ausschnitt aus m_topo.cpp und m_steerg.cpp

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;
};