Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Apr 26, 2024 01:16

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Sep 25, 2014 20:25 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Hallo Leute,

Ich bin gerade dabei meine Fensterklasse ein wenig aufzuräumen. Dabei würde ich gerne auf das klassische Schließen und Neu-Erstellen verzichten. Soweit klappt das auch ganz gut, nur wenn
ich versuche den Window-Style zu setzen nachdem das Fenster erstellt wurde, erhalte ich keine Nachrichten mehr. Sprich PeekMessage ist danach immer "false". Hat jemand eine Idee woran das
liegen kann??
Code:
  1.  
  2.         DWORD style = GetWindowLong(self->os->hWnd, GWL_EXSTYLE);
  3.         style &= ~oldstyle;
  4.         style |= self->os->dwStyle;
  5.         SetWindowLong(self->os->hWnd, GWL_EXSTYLE, self->os->dwExStyle);
  6.         SetWindowLong(self->os->hWnd, GWL_STYLE, style); //diese Zeile verursacht das Problem
  7.         SetWindowPos(self->os->hWnd, HWND_TOPMOST, 0, 0,
  8.                 self->os->WindowRect.right - self->os->WindowRect.left,
  9.                 self->os->WindowRect.bottom - self->os->WindowRect.top, SWP_FRAMECHANGED);
  10.         UpdateWindow(self->os->hWnd);
  11.  

_________________
Meine Homepage


Zuletzt geändert von yunharla am Sa Sep 27, 2014 21:04, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Sep 26, 2014 19:02 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ich habe gerade folgendes in einer Lazarus OpenGL-Anwendung probiert:

Code:
  1. procedure TForm1.Timer2Timer(Sender: TObject);
  2. var
  3.   i: int64;
  4. begin
  5.   i := Random(6);
  6.   case i of
  7.     0: begin
  8.       BorderStyle := bsNone;
  9.     end;
  10.     1: begin
  11.       BorderStyle := bsSingle;
  12.     end;
  13.     2: begin
  14.       BorderStyle := bsSizeable;
  15.     end;
  16.     3: begin
  17.       BorderStyle := bsDialog;
  18.     end;
  19.     4: begin
  20.       BorderStyle := bsToolWindow;
  21.     end;
  22.     5: begin
  23.       BorderStyle := bsSizeToolWin;
  24.     end;
  25.   end;
  26. end;    


Sobald, der Timer den Fensterstyle ändert, geht auch etwas von OpenGL verloren.
Das Fenster leuchtet kurz grau auf, anschliessend wird es schwarz.

Zitat:
nur wenn ich versuche den Window-Style zu setzen nachdem das Fenster erstellt wurde, erhalte ich keine Nachrichten mehr.


Vielleicht hat Windows ein Problem, wen man die Fenster zu Laufzeit ändert.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Sep 27, 2014 21:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
habs gefunden:

wenn ich UpdateWindow durch ShowWindow ersetze funktionieren die Nachrichten wieder. Trotzdem danke für alle die mitgerätselt haben :)

Code:
  1.  
  2.         DWORD style = GetWindowLong(self->os->hWnd, GWL_EXSTYLE);
  3.         style &= ~oldstyle;
  4.         style |= self->os->dwStyle;
  5.         SetWindowLong(self->os->hWnd, GWL_EXSTYLE, self->os->dwExStyle);
  6.         SetWindowLong(self->os->hWnd, GWL_STYLE, style); //diese Zeile funktioniert nicht
  7.         SetWindowPos(self->os->hWnd, HWND_TOPMOST, 0, 0,
  8.                 self->os->WindowRect.right - self->os->WindowRect.left,
  9.                 self->os->WindowRect.bottom - self->os->WindowRect.top, SWP_FRAMECHANGED);
  10.         ShowWindow(self->os->hWnd, SW_SHOW);
  11.  

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.093s | 17 Queries | GZIP : On ]