JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=b884936cbf4a960ae4140570dc9a5e5dMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Maximieren

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Faller
Junior JLI'ler


Alter: 36
Anmeldedatum: 30.11.2006
Beiträge: 88
Wohnort: Dresden
Medaillen: Keine

BeitragVerfasst am: 12.11.2007, 15:23    Titel: Maximieren Antworten mit Zitat

Ganz kurze Frage aber ich finde nix dazu.
Zum maximieren schon aber net direkt zu meinem Problem.

In meinem Programm brauch das zeichen einige zeit zwar net viel aber doc ein bischen.
Wenn man WM PAINT nutzt treibst die auslastung in unendliche höhe.
Weshalb ich mich auf ein minimum an neu zeichnen anstrebe.
also beim aktivieren, wenn sich was andert, beim ändern des bildes, beim scrollen.

Aber wie frage ich ab ob ein Nutzer das maximieren symbol drückt.
Dafür muss es doch auch ne windows nachricht geben.

WM_Maxi ???

kennt jemad diese Windows nachricht.
weis jemand wo ich danach siuchen kann die msdn sagt mir nix.
und die hilfe in visuel gibt mir auch net viel aus.

MFG faller
_________________
versuche alles nur wann und wie ist die frage
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 12.11.2007, 15:48    Titel: Antworten mit Zitat

Meines Wissens ist die Nachricht unter WM_SIZE zu finden Laughing
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 12.11.2007, 15:58    Titel: Antworten mit Zitat

Ähm, normalerweise ist WM_PAINT dafür da das nur neu zu zeichnen, wenn es auch neu gezeichnet werden muss. Zum Beispiel wenn ein Fenster ein anderes überdeckt oder dien Applikation wieder in den Vordergrund kommt.
Du könntest natürlich nur neu zeichnen wenn sich der Bildschirminhalt ändert und das gezeichnete in einen Buffer speichern und diesen dann bei WM_PAINT anzeigen, das dürfte schneller gehen.
(Was zeichnest du eigentlich kompliziertes, das die paar mal die WM_PAINT aufgerufen wird dir schon zu viel Rechenaufwand bedeutet??)
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Faller
Junior JLI'ler


Alter: 36
Anmeldedatum: 30.11.2006
Beiträge: 88
Wohnort: Dresden
Medaillen: Keine

BeitragVerfasst am: 13.11.2007, 08:53    Titel: Antworten mit Zitat

Da ich nicht auf die GDI plus arbeiten darf da das projekt unabhängig und klein sein muss ich auf die pnglib zurück greiffen.

diese stellt die pixel nicht in richtige reihenfolge muss ich das sortieren und dann darstellen.

ich zeichne 4 bilder png mit alpha kanal die alle allen so grössen zwischen 1000 mal 800 pixel haben.

ach und ich nutze schon einen sekundar buffer aber ich muss bei jedem bild fragen ob neue bilder eingetroffen sind und wenn das so ist muss ich aktualiesieren.

WM_size nutze ich schon und es reakiert nicht darsauf wenn ich maximieren

kenn jemand eine WM nachricht die nur fürs maxiemieren da ist ??

mfg faller

ps ich hab jetze mal nur ne aktualiesieren geschrieben also eine programm stück das nur den sekundär puffer schreibt.

wenn ich jetze die wmpaint nachricht abfrage und nur das bild aktualiesieren dan gehts mit der prozessor auslastung.

thx wür den gedanken anstoss thx
_________________
versuche alles nur wann und wie ist die frage
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 13.11.2007, 19:23    Titel: Antworten mit Zitat

Ich kenn jetzt zwar keine konkrete Nachricht nur fürs Maximieren, da bei mir WM_SIZE fürs Maximieren immer ausreichte. Wenn aber gar nichts mehr geht, kannst du ja auch regelmäßig manuell das Fenster auf Veränderungen testen. So zum Beispiel:


CPP:
BOOL HasWindowSizeChanged(HWND hWnd, RECT* LastSize) {

    RECT rcCurrentClient;
    BOOL out;
   
    // die aktuelle Fenstergröße in ein RECT speichern
    GetClientRect( hWnd, &rcCurrentClient );
   
    // schauen ob sich zum letzten mal etwas geändert hat
    out = (rcCurrentClient.right != LastSize->right) || (rcCurrentClient.bottom != LastSize->bottom)

    // aktuelle Fenstergröße für später speichern
    *LastSize = rcCurrentClient;

    return out;

}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Faller
Junior JLI'ler


Alter: 36
Anmeldedatum: 30.11.2006
Beiträge: 88
Wohnort: Dresden
Medaillen: Keine

BeitragVerfasst am: 14.11.2007, 11:18    Titel: Antworten mit Zitat

Jep das ist ne gute idee werde ich mir merken warum nach was suchen einfach mal selber schreiben thx

mfg faller
_________________
versuche alles nur wann und wie ist die frage
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 14.11.2007, 13:19    Titel: Antworten mit Zitat

Problem an der Lösung: Du musst jede Sekunde oder so prüfen. Das ist schlecht weil ein paar tausendmal überhaupt nichts sich ändern wird. Wird der Abstand des Überprüfens zu groß, dauert es nach dem Maximieren evtl. einige Sekunden bis es bemerkt wird.
Die Lösung mag zwar einfach erscheinen aber über diese Nachteile muss man sich unbedingt im klaren sein.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 14.11.2007, 16:29    Titel: Antworten mit Zitat

Naja, also wenn das Programm sowieso in einer ständigen Loop abläuft, bringt es dir wohl kaum nennenswerte Performanceverluste diesen Test jedesmal durchzuführen. Falls du aber ein rein eventgesteuertes Programm haben solltest, kannst du entweder bei jeder Art von reinkommender Nachricht testen ob sich die Fenstergröße verändert hat; oder falls die Nachrichten etwas sperrlich sind kann man ja mit einem Timer nachhelfen den man auf ca. 30-50 Millisecunden setzt. Dann kann man bei jeder Nachricht von diesem Timer den obrigen Test durchfführen. Hier sollte dann die Fenstergrößeninformation ausreichend aktuell sein und die CPU wäre mit Sicherheit auch nicht beleidigt Smile

mfg Matthias
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
PeaceKiller
JLI Master


Alter: 35
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 14.11.2007, 16:32    Titel: Antworten mit Zitat

Otscho hat Folgendes geschrieben:
Hier sollte dann die Fenstergrößeninformation ausreichend aktuell sein und die CPU wäre mit Sicherheit auch nicht beleidigt Smile


Doch, ein Laptop nimmt einem so etwas übel.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum