Hallo NG,
heute bin ich gleich mal 2x vertreten ... Hier mein 2. Problem:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| function WinMain(hInstance : HINST; hPrevInstance : HINST; lpCmdLine : PChar; nCmdShow : Integer) : Integer; stdcall; var msg : TMsg; appStart : DWord; begin Finished := False;
// Das Programm wird initialisiert (Fenster erstellen!) if not glCreateWnd(800, 600, FALSE, 32) then begin Result := 0; Exit; end;
appStart := GetTickCount(); // Die Zeit zum Programmstart nehmen
// Main message loop: |
Problem: wird auf
Minimieren geklickt, ist das Fenster weg, ebenso bei Maximieren. Wie kann ich das
verhindern und abfangen ? Wie kann ich eine Prozedur straten, wenn jemand auf Minimize klickt ? Die Tastaturereignisse kann ich mit der Funktion
Quelltext
1:
| function WndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; |
anfangen. Wie aber Minimize etc... Wie vrhindere ich, dass das Fenster ganz verschwindet sondern nur minimiert wird ?
Mein Fenster erstelle ich mit:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| function glCreateWnd(Width, Height : Integer; Fullscreen : Boolean; PixelDepth : Integer) : Boolean; var wndClass : TWndClass; // Fenster Klasse dwStyle : DWORD; // Fenster Stil dwExStyle : DWORD; // Erweiterter Fenster Stil dmScreenSettings : DEVMODE; // Bildschirm Einstellungen (fullscreen, etc...) PixelFormat : GLuint; // OpenGL Einstellungen (Pixelformat) h_Instance : HINST; // aktuelle Instanz pfd : TPIXELFORMATDESCRIPTOR; // Einstellungen für das OpenGL Fenster begin h_Instance := GetModuleHandle(nil); // Instanz für's Fenster holen ZeroMemory(@wndClass, SizeOf(wndClass)); // Daten in wndClass löschen
with wndClass do // Setup der Fenster Klasse begin style := CS_HREDRAW or // Neuzeichenen wenn Fenster-Breite geändert CS_VREDRAW or // Neuzeichenen wenn Fenster-Höhe geändert CS_OWNDC; // Device Context exlusiv lpfnWndProc := @WndProc; // WndProc wird als Window Procedure gesetzt hInstance := h_Instance; hCursor := LoadCursor(0, IDC_ARROW); lpszClassName := 'TEST'; end;
if (RegisterClass(wndClass) = 0) then // Fenster Klasse registrieren begin MessageBox(0, 'Failed to register the window class!', 'Error', MB_OK or MB_ICONERROR); Result := False; Exit end; |
Gruss
Markus