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
|
Verfasst am: 12.11.2007, 15:23 Titel: Maximieren |
|
|
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 |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 12.11.2007, 15:48 Titel: |
|
|
Meines Wissens ist die Nachricht unter WM_SIZE zu finden |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 12.11.2007, 15:58 Titel: |
|
|
Ä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 |
|
|
Faller Junior JLI'ler
Alter: 36 Anmeldedatum: 30.11.2006 Beiträge: 88 Wohnort: Dresden Medaillen: Keine
|
Verfasst am: 13.11.2007, 08:53 Titel: |
|
|
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 |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 13.11.2007, 19:23 Titel: |
|
|
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 |
|
|
Faller Junior JLI'ler
Alter: 36 Anmeldedatum: 30.11.2006 Beiträge: 88 Wohnort: Dresden Medaillen: Keine
|
Verfasst am: 14.11.2007, 11:18 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 14.11.2007, 13:19 Titel: |
|
|
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 |
|
|
Otscho Super JLI'ler
Alter: 36 Anmeldedatum: 31.08.2006 Beiträge: 338 Wohnort: Gummibären-Gasse Medaillen: Keine
|
Verfasst am: 14.11.2007, 16:29 Titel: |
|
|
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
mfg Matthias |
|
Nach oben |
|
|
PeaceKiller JLI Master
Alter: 35 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 14.11.2007, 16:32 Titel: |
|
|
Otscho hat Folgendes geschrieben: | Hier sollte dann die Fenstergrößeninformation ausreichend aktuell sein und die CPU wäre mit Sicherheit auch nicht beleidigt |
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 |
|
|
|