Hauptseite | Klassenhierarchie | Auflistung der Klassen | Auflistung der Dateien | Klassen-Elemente | Datei-Elemente | Zusätzliche Informationen

MJ_GUI.H

gehe zur Dokumentation dieser Datei
00001 //############################################################################# 00002 // // 00003 // MJ_GUI.H // 00004 // // 00005 // Subsystem : neue Manuelle Justage / Oberfläche // 00006 // Benutung durch andere Subsysteme erforderlich: JA // 00007 //---------------------------------------------------------------------------// 00008 // Autoren: Thomas Kullmann, Günther Reinecker // 00009 // Stand : 21.04.2002 // 00010 // // 00011 //############################################################################# 00012 00013 #ifndef __MJ_GUI_H 00014 #define __MJ_GUI_H 00015 00016 #include "manjust\mj_funk.h" // die Funktionalität 00017 00018 //--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||-- 00019 00020 //############################################################################# 00021 // globale Typdeklarationen 00022 //############################################################################# 00023 00024 enum ETB { tb1= 1, tb2= 2, tb3= 3 }; // 0 für "unbekannter Teilbereich" 00025 enum ERessourceId{ riMotorList, //Kombinationsfeld: Antriebsauswahl 00026 riStart, riSetRelativeZero, riResetRelativeZero, riOffset, //Schaltfläche: Start/ Stop; Relative Null setzen, aufheben; "Offset..." 00027 riDirectMode, riDriveMode, riStepMode, //Optionsfelder: Betriebsart 00028 riAngleDest, riSpeed, riStepWidth, //Eingabefelder: Bewegungsparameter 00029 riAngle, riOffsetState, //Eingabefelder: Istposition, Offset 00030 riRelativePos, //Bildlaufleiste: relative Positionierung 00031 riRelativePosMin, riRelativePosMax, //Textfelder: Min-, Maxposition 00032 riAngleDestUnit, riSpeedUnit, riStepWidthUnit, riAngleUnit, riRelativePosUnit, //Textfelder: Einheit des Antriebs 00033 riRefPoint //Textfeld: fehlender Referenzpunkt 00034 }; 00035 00036 //############################################################################# 00037 // TManJustageDlg 00038 //############################################################################# 00039 00040 class TManJustageDlg : public TModalDlg, public ITimer 00041 { // Hauptdialogfenster Manuelle Justage 00042 00043 //***************************************************************************** 00044 // KONSTRUKTOR-DESTRUKTOR 00045 public: 00046 00047 // Konstruktor/Destruktor 00048 TManJustageDlg ( void ); 00049 virtual ~TManJustageDlg ( void ); 00050 00051 //***************************************************************************** 00052 // EREIGNISSE DER BASISKLASSE 00053 protected: 00054 00055 // stellt die Oberfläche wieder her, wie sie verlassen wurde (nach Aufruf des Dialogfensters aufgerufen) 00056 virtual BOOL Dlg_OnInit ( HWND, HWND, LPARAM ); 00057 00058 // zum Verarbeiten von benutzerdefinierten Botschaften 00059 virtual LRESULT OnEvent ( HWND, UINT, WPARAM, LPARAM ); 00060 00061 // hier kommen die Windows-Botschaften an; die für die Teilereiche werden an CheckLeft, CheckMiddle, CheckRight weitergeleitet 00062 virtual void Dlg_OnCommand ( HWND, int, HWND, UINT ); 00063 00064 // hier kommen die Bildlaufleistenbotschaften an (nur Fahr-/ Schrittbetrieb) 00065 virtual void Dlg_OnHScrollBar ( HWND, HWND, UINT, int ); 00066 00067 // darf der Dialog beendet werden 00068 virtual void LeaveDialog ( void ); 00069 00070 // POLLING-Timer Ereignis das die Antriebsbewegung und Makroverarbeitung überwacht und den Fortschritt darstellt 00071 // ruft dazu die weiter unten genannten Ereignisse 00072 virtual void OnTimer ( TBasicTimer *const ); 00073 00074 private: 00075 00076 // die Bewegung des angegebenen Antriebs hat begonnen 00077 void OnMotionStarts ( const UINT ); 00078 00079 // die Bewegung ist im vollen Gange 00080 void OnMotionProgress ( const UINT ); 00081 00082 // die Bewegung hatgestoppt 00083 void OnMotionStops ( const UINT ); 00084 00085 00086 // die Makroverarbeitung wurde gestartet 00087 void OnMeasureStarts ( void ); 00088 00089 // ... ist in vollem Gange 00090 void OnMeasureProgress ( void ); 00091 00092 // ... ist beendet 00093 void OnMeasureStops ( void ); 00094 00095 //***************************************************************************** 00096 // Verhalten aller Steuerelemente außerhalb der Teilbereiche 00097 private: 00098 00099 // Psd-Offset definieren 00100 void OnPsdOffset ( void ); 00101 00102 // Teilbereich wechseln (Tastenkombination Ctrl+Tab) 00103 void OnChooseTB ( void ); 00104 00105 // Meldung ausgeben, wenn die gewünschte Aktion nicht ausgeführt werden kann 00106 void OnNoAction ( void ); 00107 00108 //***************************************************************************** 00109 // Verhalten aller Steuerelemente innerhalb der Teilbereiche 00110 private: 00111 00112 // ==> TRUE <--> Botschaft durch eines der hier behandelten Steuerelemente verarbeitet 00113 BOOL TB_CheckLeft ( const ETB, const int ); // Auswahlliste Antrieb, Betriebsarten 00114 BOOL TB_CheckMiddle ( const ETB, const int ); // Start/ Stop und Betriebsarten, wenn [ENTER] gedrückt wurde 00115 BOOL TB_CheckRight ( const ETB, const int ); // Relative Null setzen, aufheben; Offset setzen 00116 BOOL TB_CheckExit ( const ETB, const int ); // Verhalten für's Verlassen von Sollposition, Bewegungsgeschwindigkeit und Schrittweite 00117 00118 //***************************************************************************** 00119 // Verhalten für ausgewählter Steuerelemente innerhalb der Teilbereiche 00120 private: 00121 00122 // Start bzw. Stop 00123 void TB_StartStopClicked ( const ETB ); 00124 00125 // der Parameter ist der Index des Antriebs, dessen Parameter gesetzt werden sollen 00126 void TB_AngleDestEntered ( const ETB ); // Zielposition wird in die Funktionalität übernommen 00127 void TB_SpeedEntered ( const ETB ); // Bewegungsgeschwindigkeit 00128 void TB_StepWidthEntered ( const ETB ); // Schrittweite 00129 00130 // <Antrieb auswählen> wurde benutzt 00131 void TB_MotorChanged ( const ETB ); 00132 00133 //***************************************************************************** 00134 // quasiparallele Aktualisierung (Inhalt und Zustand) aller Steuerelemente 00135 private: 00136 00137 // sendet eine "USR_"-Botschaft an den Dialog, dementsprechend wird dort eine der folgenden Methoden aufgerufen, 00138 // so dass die quasiparallel verarbeitet werden können 00139 void Notice( const int, const ETB, const BOOL= FALSE ); 00140 00141 // Inhalt aller Steuerelemente innerhalb des angegebenen Teilbereichs aktualisieren 00142 // Wenn der zweite Parameter mit TRUE ist, wird auch der Zustand der Steuerelemente aktualisiert. 00143 void OnTB_Controls ( const ETB, const BOOL ); // alle Steuerelemente 00144 void OnTB_KindOfMove ( const ETB, const BOOL ); // Betriebsart 00145 void OnTB_StartStop ( const ETB, const BOOL ); // Start bzw. Stop 00146 void OnTB_MotionParam ( const ETB, const BOOL ); // Bewegungsparameter 00147 void OnTB_Positions ( const ETB, const BOOL ); // Min-, Ist-, Soll-, Maximalposition und Bildlaufleiste 00148 void OnTB_Offset ( const ETB, const BOOL ); // Offset, Relative Null setzen und aufheben 00149 void OnTB_Units ( const ETB ); // Einheiten 00150 00151 // Zustand aller Steuerelemente innerhalb des Teilbereichs aktualisieren 00152 void OnTB_ControlsEnable ( const ETB ); // alle Steuerelemente 00153 void OnTB_MotorListEnable ( const ETB ) const; // Antriebsauswahlliste 00154 void OnTB_KindOfMoveEnable ( const ETB ) const; // Betriebsart 00155 void OnTB_StartStopEnable ( const ETB ) const; // Start bzw. Stop 00156 void OnTB_MotionParamEnable ( const ETB ) const; // Bewegungsparameter 00157 void OnTB_PositionsEnable ( const ETB ) const; // Sollposition und Bildlaufleiste (Min-, Ist-, Maximalposition sind und bleiben gesperrt und ausgegraut) 00158 void OnTB_OffsetEnable ( const ETB ) const; // Offset, Relative Null setzen und aufheben 00159 00160 // aktualisiert (Inhalt und Zustand) alle Steuerelemente außerhalb der Teilbereiche 00161 // "Psd-Offset" und "Halbwertsbreite messen" 00162 void OtherControls ( void ) const; 00163 00164 //***************************************************************************** 00165 // Verwaltung der Teilbereiche 00166 private: 00167 // ==> der Antrieb, der im angegebenen Teilbereich angezeigt wird; ggf. GetMotorCount() (d.h. "kein Antrieb") 00168 UINT TB2Selection ( const ETB ) const; 00169 00170 // ==> Teilbereich, in dem der angebene Antrieb ausgewählt wird; ggf. (ETB)0 00171 ETB Selection2TB ( const UINT ) const; 00172 00173 // ==> SetSelection-Aufruf zulässig 00174 BOOL CanSetSelection ( const ETB, const UINT ) const; 00175 00176 // wählt den angegebenen Antrieb im angegebenen Teilbereich aus und alle Steuerelemente im Teilbereich werden aktualisiert (Inhalt und Zustand) 00177 BOOL SetSelection ( const ETB, const UINT ); 00178 00179 // ==> Fensterhandle einer Ressource im Teilbereich; ggf. 0 00180 HWND GetCtrl ( const ETB, const ERessourceId ) const; 00181 00182 // ==> Ressourcen-ID einer Ressource im Teilbereich; ggf. 0 00183 static int GetResId ( const ETB, const ERessourceId ); 00184 00185 //***************************************************************************** 00186 // zur Verwaltung der Teilbereiche 00187 private: 00188 // der im ersten Parameter angegebenen Teilbereich wird um eins erhöht und zurückgegeben 00189 // ist der erste Parameter "(TAxisType)0", wird der erste Teilbereich zurückgegeben 00190 // ==> FALSE <--> der übergebene Parameter kann nicht weiter inkrementiert werden (ist bereits der letzte Teilbereich) 00191 static BOOL TB_Next ( ETB& ); 00192 00193 // ==> Anzahl der Teilbereiche 00194 static UINT TB_Count ( void ); 00195 00196 // ==> Nummer des angegebenen Teilbereichs, beginnend bei 0 00197 static UINT TB_GetId ( const ETB ); 00198 00199 // gibt "Teilbereich<Nummer des Teilbereichs, beginnend bei 1>" in <aReturn> zurück; 00200 // Dort sollten mind. 13 Zeichen Platz reserviert sein! 00201 static void TB_GetName ( const ETB aTB, LPSTR aReturn ); 00202 00203 //***************************************************************************** 00204 // Winkelwerte in Position auf der Bildlaufleiste umrechnen 00205 private: 00206 // Winkelwerte des Antriebs ins Intervall [0..32.000] der Bildlaufleiste einpassen und 00207 // die umgerechneten Werte in den letzten drei Parametern zurückgeben 00208 static void ScrollbarCalculate ( const TAngle, const TAngle, const TAngle, 00209 int&, int&, int& ); 00210 00211 //***************************************************************************** 00212 // ATTRIBUTE 00213 private: 00214 00215 TManJustage *m_lnkManJustage; // die Funktionalität 00216 TInterfaceTimer *m_lnkTimer; // POLLING-Timer 00217 UINT *m_Selection; // enthält für jeden Teilbereich, welcher Index zuletzt ausgewählt war 00218 00219 // Einstellungen zur Verbesserung des Reaktionsverhalens auf langsamen Rechnersystemen 00220 BOOL m_Parallel; // quasiparallele Nachrichtenverarbeitung? 00221 BOOL m_StateRefresh; // Steuerelementsperrung zulassen? 00222 BOOL m_DisplayNoActionMsg; // Meldung ausgeben, wenn die gewünschte Aktion nicht ausgeführt werden kann 00223 }; 00224 00225 //############################################################################## 00226 // TMotorOffsetDlg 00227 //############################################################################## 00228 00229 class TMotorOffsetDlg : public TModalDlg 00230 { // Dialogfenster 'Offset für <Antrieb>', Teil der Manuellen Justage 00231 00232 //***************************************************************************** 00233 // Konstruktor-Destruktor 00234 public: 00235 00236 TMotorOffsetDlg ( const UINT, TManJustage* ); 00237 00238 //------------------------------------------------------------------------------ 00239 // Ereignisse der Basisklasse 00240 protected: 00241 00242 BOOL Dlg_OnInit ( HWND, HWND, LPARAM ); // Initialisierungen 00243 void Dlg_OnCommand ( HWND, int, HWND, UINT ); // Eingabeverarbeitung 00244 00245 //***************************************************************************** 00246 // Attribute 00247 private: 00248 00249 TManJustage *m_lnkManJustage; // die Funktionalität 00250 UINT m_Idx; // Index des Antriebs, dessen Offset gesetzt werden soll 00251 UINT m_Digits; // Nachkommastellen 00252 00253 //***************************************************************************** 00254 // Methoden 00255 private: 00256 00257 void ChooseAngleMode ( BOOL ); // Parameter gibt an ob nun Winkel- (Parameter==TRUE) oder Offset-Eingabe (FALSE) erlaubt sind 00258 BOOL CalcValue ( BOOL ); // lokale Berechnung von Offset oder Winkel, Übernahmen wenn Parameter==TRUE 00259 BOOL IsAngleMode ( void ); // welche Eingabemöglichkeit besteht; TRUE <--> Winkeleingabe 00260 }; 00261 00262 //############################################################################# 00263 //TPsdOffsetDlg 00264 //############################################################################# 00265 00266 class TPsdOffsetDlg : public TModalDlg 00267 { // Dialogfenster 'Offset für PSD', Teil der Manuellen Justage 00268 00269 //***************************************************************************** 00270 // KONSTRUKTOR-DESTRUKTOR 00271 public: 00272 00273 TPsdOffsetDlg ( const UINT, TManJustage* ); 00274 00275 //***************************************************************************** 00276 // EREIGNISSE DER BASISKLASSE 00277 protected: 00278 00279 // Ereignisse der Basisklasse 00280 BOOL Dlg_OnInit ( HWND, HWND, LPARAM ); 00281 void Dlg_OnCommand ( HWND, int, HWND, UINT ); 00282 00283 //***************************************************************************** 00284 // ATTRIBUTE 00285 private: 00286 00287 TManJustage *m_lnkManJustage; // die Funktionalität 00288 UINT m_Idx; // Index des Antriebs, dessen Offset gesetzt werden soll 00289 UINT m_Digits; // Nachkommastellen 00290 00291 //***************************************************************************** 00292 // Methoden 00293 private: 00294 00295 BOOL CalcValue( BOOL ); 00296 }; 00297 00298 #endif //__MJ_GUI.H 00299 00300 //############################################################################# 00301 // LastLine 00302 //#############################################################################

Erzeugt am Sat Nov 13 12:48:07 2004 für XCTL32 von doxygen 1.3.7