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__)
40 typedef char* HPSTR; 41 typedef BYTE* HPBYTE; 42 typedef float* HPFLOAT; 43 typedef WORD* HPWORD;
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