File: INCLUDE\INTERNLS\EVRYTHNG.H
1 // (C) 1993,1994 by Heiko Damerow MPG AG "Roentgenbeugung"
2
3 #ifndef _EVRYTHNG_H
4 #define _EVRYTHNG_H
5
6 #ifndef RC_INVOKED
7 #include "utils\u_utils.h"
8 #endif
9
10 //--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--
11
12 // Welche Sprache? Ist das Symbol definiert: Deutsch; sonst Englisch.
13 // Jeder der dieses Symbol benutzen möchte MUSS EVRYTHNG.H inkludieren!!!
14 #define GermanVersion 1
15
16 #define MaxString 512
17
18 #define M_PI 3.14159265358979323846
19
20 // Voreinstellungen
21 enum EScrollBarSide {sbsLeft= 55, sbsRight= 56};
22
23 #define LenAdditionalInfo 40
24
25 /* benutzt im Motor- und Detektorsubsystem; könnte meistens durch BOOL ersetzt werden */
26 #define R_Failure 202
27 #define R_OK 999
28 #define R_SoftOverflow 216
29
30 /* Benutzt in counters.cpp, testdev.cpp */
31 #define DetectorTimerIdStart 100
32
33 /* Benutzt in Motor- und Detektorsubsystem, alte Topographie, alte Manuelle Justage */
34 #define TimerIdInformation 399
35
36 /* HPBYTE, HPFLOAT: Benutzt in m_data.cpp, m_device.cpp */
37 /* HPSTR: benutzt in m_arscan.cpp (Allerdings Verdacht auf toten Code) */
38 /* HPWORD: NICHT BENUTZT */
39 #if defined(__FLAT__)
44 #else
45
46 typedef char _huge * HPSTR;
47 typedef BYTE _huge * HPBYTE;
48 typedef float _huge * HPFLOAT;
49 typedef WORD _huge * HPWORD;
50 #endif
51
52 enum EUnitType
53 {
54 utGrad= 1, utMinuten, utSekunden, utMillimeter, utMikrometer, utChannel, utNone
55 };
56
57 // Skalierung für x, y, z-Achse von Step- und AreaScan und der Analogdarstellung des CounterWindows
58 enum EScale
59 {
60 sLogarithmic= 1, sLinear, sUser
61 };
62
63 // parsen eines Einheitenbezeichners
64 EUnitType _CURVECLASS WINAPI UnitEnum( LPSTR );
65 // rechnet <fValParam> entsprechend <aUnit> um und gibt dieses zurück
66 float _CURVECLASS WINAPI CalcValueInUnit(EUnitType aUnit, float fValParam);
67 // rechnet <fValParam> entsprechend <aUnit> zurück und gibt dieses zurück
68 float _CURVECLASS WINAPI CalcValueFromUnit(EUnitType aUnit, float fValParam); // macht die Berechnung von CalcValueInUnit rückgängig und umgekehrt
69
70 class TMDIWindow; // forward
71
72 //#############################################################################
73 // IMainEvents
74 //#############################################################################
75
76 class IMainEvents { // Beobachter-Interface für Ereignisse von TMain
77 protected:
78 IMainEvents() {};
79 IMainEvents( const IMainEvents& ) {}; // kein Copy-Konstruktor
80 IMainEvents& operator= ( const IMainEvents& ) {}; // kein Zuweisungsoperator
81
82 // um über die folgenden Ereignisse benachrichtigt zu werden, muss IMainEvents eingeerbt werden und sich bei Main angemeldet werden
83 public:
84 // das Hauptprogramm wird beendet
85 virtual void OnLeave ()= 0; // falls sich das Objekt hier freigibt: ZUVOR abmelden (siehe TTopography::OnLeave)
86 };
87
88 //#############################################################################
89 // TMain
90 //#############################################################################
91
92 class TMain : public TBasicMain {
93 public:
94 TMain( void );
95 virtual ~TMain( void );
96
97 BOOL Init( HINSTANCE hInstance, int cmdShow );
98 void InitHardware();
99
100 BOOL HasNewManJustage ( void )
101 {
102 return m_NewManJustage;
103 };
104
105 //Scan-Fenster und deren Handle's
106 public:
107 TMDIWindow *ScanWindow;
108 TMDIWindow *AreaScanWindow;
109 //Datum 16.05.2003: TMDIWindow *AdjustmentWindow;
110 //Datum 16.05.2003: TMDIWindow *CCDLineScanWindow;
111 //Datum 16.05.2003: TMDIWindow *AreaScanCCDWindow;
112 //Datum 16.08.2004: HWND hScanWindow; // jetzt TBasicMain::m_WndScan
113 //Datum 16.08.2004: HWND hAreaScanWindow; // jetzt TBasicMain::m_WndAreaScan
114 //Datum 16.05.2003: HWND hCCDLineScanWindow;
115 //Datum 16.05.2003: HWND hAreaScanCCDWindow;
116 //Datum 16.05.2003: HWND hActualWindow;
117
118 // ANFANG: neu Kullmann+Reinecker (31.01.2004) anderen Klassen gestatten auf Ereignisse zur reagieren
119 public:
120 bool AddToEventList(IMainEvents *);
121 bool RemoveFromEventList(IMainEvents *);
122 private:
123 TIndList m_EventHandler;
124 // ENDE: neu Kullmann+Reinecker (31.01.2004)
125
126 private:
127 // Init
128 HMENU CreateMenuBar( void );
129
130 // Ereignisse
131 LRESULT OnCommand(HWND hWindow, WPARAM wParam, LPARAM lParam); // alle WM_Command
132 void OnSize(HWND);
133 void OnPaint(HWND);
134 void OnMenuInit( void );
135 void OnMenuSelect(HWND, WPARAM, LPARAM);
136
137 void SetWatchIndicator( long );
138 void SetParameters( void );
139 //21.04.2004 void TellMessage( int );
140
141 // Fensterposition laden/ speichern
142 void LoadPos( void );
143 void SavePos( void );
144
145 //Statuszeile
146 void CreateStatusBar( HINSTANCE, HWND );
147 //16.08.2004 void BlastStatusLine( HWND, int );
148 //16.08.2004 void DrawStatus( HWND, ATOM, int );
149
150 //27.04.2004 BOOL GetDataDlg( LPSTR, int* );
151
152 //ATTRIBUT(E)
153 private:
154 BOOL m_NewManJustage;
155
156 // Welche Programmfunktionen für den Anwender sichtbar machen?
157 BOOL AreaScanExtention, ScanExtention, MacroExtention, TopographyExtention;
158
159 HMENU hTheMenu;
160 static HACCEL hAccellerator;
161 // 16.06.2004 HBITMAP bmpStatusLine;
162
163 //24.04.2004 int CurrentID;
164 //24.04.2004 HMENU CurrentPopup;
165
166 // neu für Hintegrundbilder
167 public:
168 HWND hwndClient; // Clientbereich (wo die MDI-Fenster rein kommen)
169 WNDPROC DefMdiClientProc;
170 static LRESULT CALLBACK EventHandlerMdiClient(HWND, UINT, WPARAM, LPARAM); // für Clientbereich (wo die MDI-Fenster rein kommen)
171
172 // überschriebenes aus TBasicMain
173 protected:
174 virtual LPCSTR GetTarget( void );
175 virtual LPSTR GetReflection( LPSTR sRef );
176
177 //STATIC
178 public:
179 static LRESULT CALLBACK EventHandler( HWND, UINT, WPARAM, LPARAM );
180 static int MessageLoop( void );
181 };
182
183 //#############################################################################
184 // TMDIWindow
185 //#############################################################################
186
187 enum EPaintType {ptEntire= 0, ptPaintPoint, ptFlush};
188
189 class TMDIWindow : public TBasicMDIWindow
190 {
191 public:
192 TMDIWindow ( HINSTANCE ); // Fenster erzeugen (nicht anzeigen)
193 virtual ~TMDIWindow ( void ); // Fenster ausblenden und freigeben
194
195 LRESULT Show ( void ); // Fenster anzeigen; zurück gibt's das Fensterhandle oder NULL
196
197 // überschreiben von Methoden aus der Basisklasse; waren vorher alle, bis auf OnCommand, direkt in OnEvent implementiert
198 protected:
199 virtual HICON GetIcon ( void ) const;
200
201 virtual HCURSOR GetCursor( void )
202 {
203 return LoadCursor( NULL, IDC_ARROW );
204 };
205 virtual LPCSTR ClassName( void )
206 {
207 return "Nutzerfenster";
208 };
209 virtual LPCSTR GetCharacteristic( void )
210 {
211 return "Fenster";
212 };
213
214 virtual void OnRButtonDown ( WPARAM wParam, LPARAM lParam );
215 virtual void OnTimer ( WPARAM, LPARAM );
216 virtual void OnNotCreated ( void );
217 virtual void OnMenuSelect ( WPARAM, LPARAM );
218 virtual LRESULT OnCommand ( WPARAM, LPARAM );
219
220 public:
221 virtual BOOL CanOpen ( void ); //Anzahl der Fenster beschränken
222 virtual BOOL CanClose( void ); //vor dem Schließen, Messung abbrechen
223
224 // zum Ausgrauen der Hauptmenüpunkte
225 public:
226 virtual BOOL CanNew() // Datei -> Neu
227 { return FALSE; }
228 virtual BOOL CanOpenFile() // Datei -> Nachladen
229 { return FALSE; }
230 virtual BOOL CanSave() // Datei -> Sichern
231 { return FALSE; }
232 virtual BOOL IsScanning(BOOL &PsdContinious) // Ausführen -> Makro abbrechen
233 { PsdContinious= FALSE; return FALSE; }
234 virtual BOOL IsInterrupted() // Ausführen -> Makro abbrechen
235 { return bInterrupted; }
236
237 // neu Zeichnen
238 public:
239 virtual void UpdateWnd( EPaintType= ptEntire );
240 protected:
241 bool bUserPaint;
242 BOOL WholeWnd( void );
243
244 // Virtuelle Funktionen zum Abwickeln von Ablaeufen
245 protected:
246 // Hauptmenü Bearbeiten -> Kopieren
247 virtual void DoCopy( void ) {};
248
249 //! Ablaufsteuerung
250 virtual void SteeringReady( LPARAM ) {}; // Ende
251 virtual void SteeringReset( LPARAM ) {}; // Abbruch
252 //Datum 05.06.2004 virtual void DistanceSetRequest( LPARAM ) {};
253 virtual void Interrupt(); //! unterbricht Scanvorgang
254 virtual void TimerRequest( WPARAM ) {}; // Timer
255
256 //! erhaelt Messpunkt, stellt ihn dar, speichert ihn ggf.
257 virtual void CounterSetRequest( LPARAM ) {};
258
259 protected:
260 BOOL bInterrupted;
261 HMENU hHoleMenu, // als Dummy für LoadMenu, wenn es benutzt wird, soll TheMenu ein Untermenü dessen sein
262 TheMenu; // DAS Kontextmenü, das beim Klick auf die rechte Maustaste angezeigt wird
263
264 protected:
265 BOOL bPaintPoint;
266 static int s_WindowCount; // Fenster-Zaehler
267 };
268
269 //#############################################################################
270 // TFileWindow
271 //#############################################################################
272
273 // Klasse die das Laden, Speichern von Dateien und die Verwaltung des Dateinamens sowie den Gespeichert-Status verwaltet
274
275 enum EAskType {atDefault, atNewName, atNoAsk};
276
277 // MDI-Fenster mit Datei neu/ laden/ speichern Unterstützung
278 class TFileWindow : public TMDIWindow {
279 public:
280 TFileWindow( HINSTANCE ); // Fenster erzeugen (nicht anzeigen)
281
282 // Überschriebenes aus der (Fenster-)Basisklasse
283 protected:
284 virtual LRESULT OnCommand ( WPARAM, LPARAM );
285 virtual BOOL CanClose( void ); //*** Daten schon gespeichert?
286
287 virtual BOOL CanNew() // Datei -> Neu
288 { return TRUE; }
289 virtual BOOL CanOpenFile() // Datei -> Nachladen
290 { return TRUE; }
291 virtual BOOL CanSave() // Datei -> Sichern
292 { return TRUE; }
293
294 // Hauptmenü Datei ->
295 public:
296 virtual BOOL New( void ); // Neu
297 virtual BOOL LoadOldData(); // Nachladen
298 virtual BOOL SaveFile( EAskType=atDefault ); // Sichern
299 virtual BOOL SaveFileAs( void ); // Sichern als...
300
301 virtual BOOL UpdateFile( void )
302 {
303 return FALSE;
304 };
305
306 // Zugriff auf Dateiname, Status der letzten Speicherung
307 public:
308 LPSTR GetFileName( void )
309 {
310 return FileName;
311 };
312
313 BOOL SetFileName( LPSTR );
314
315 void FileChange( void ) {
316 bFileChanged= TRUE;
317 };
318
319 BOOL IsModified( void ) {
320 return bFileChanged;
321 };
322
323 //ATTRIBUT(E)
324 public:
325 char szDataPath[MaxString]; // benutzt durch die Dialogfenster zum Laden/ Speichern
326
327 protected:
328 BOOL bOldDataLoaded;
329 BOOL bIsNewFile;
330 BOOL bFileChanged;
331 char FileName[2*MaxString];
332 char szFilter[MaxString];
333 char szExtension[4];
334 };
335
336 #endif //ifndef _EVRYTHNG_H
337