Italia
Wünsche und Anregungen

11B15: wm_paint per SubClassProc

 
Wie kann ich verhindern das dieser Quelltext in einer Endlosschleife abläuft?
KompilierenMarkierenSeparieren
04.03.2008  
 



Indem man %hWnds Style ändert: (WS_CLIPCHILDREN)
KompilierenMarkierenSeparieren
cls
SetStyle %hwnd, 1, GetStyle(%hwnd, 1) | $02000000  WS_CLIPCHILDREN// kein Flimmern z.B. beim Skalieren
subClass %hWnd,1

while 1

    waitInput

wend

subClassProc

    if SubClassMessage(%hWnd,15) wm_paint

    endIf

05.03.2008  
 




RGH
While 1 : wend ist immer eine Endlosschleife!

Aber ich denke, du willst wissen, wie Du es anstellst, dass ein Zeichnen im wm_Paint-Abschnitt nicht gleich eine neue wm_Paint-Message auslöst und dadurch eine Endlosschleife entsteht.
Dafür gibt es in der Windows-API das Funktionspaar BeginPaint/EndPaint:
KompilierenMarkierenSeparieren
Der Zähler i& ist da, damit man sieht, wann neugezeichnet wird. Wenn Du ~BeginPaint und ~EndPaint drin hast, so wie es nahezu jedes Windowsprogramm es hat, dann wird z.B. nur beim Verändern der Dimensione des Hauptfensters neugezeichnet. Kommentierst Du diese Zeilen aus, wird nach dem ersten Zeichnen ständig neugezeichnet. (Keine Angst: Abbruch durch den Schließen-Button geht naturalmente trotzdem.)

BTW: Wenn Du ein Programm schreibst, dass WaitInput eigentlich nie Verlassen soll, weil Du alles circa die Messages regelst (sozusagen Windowsprogrammierung zu Fuß), dann kannst Du statt Deiner Endlosschleife um WaitInput einfach den noch unkommentierten neuen Befehl WAITEND benutzen. Wie der Name andeutet, wird WAITEND erst beim Programmende verlassen:
KompilierenMarkierenSeparieren
Saluto
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
05.03.2008  
 



Die Erklärung ist wirklich super,

ich wollte aber eher darauf hinweisen das eben genau das nicht possibile ist. (ohne WS_CLIPCHILDREN)

Ebenso war leider festzustellen das ein wm_paint-per-subClassProc-Abfangen nicht wirklich sinnvoll ist da zwischen Waitinput zu Waitinput naturalmente (aber auch leider) nicht gesubclasst wird.

wm_paint als userMessage endet auch im ewigen Loop.

Mein obiges While 1 ist deshalb in XProfan keine tatsächliche Endlosschleife weil das WaitInput bei nicht gesetztem WindowStyle 512 das Programm beendet. (Diese Endlosschleife meinte ich also nicht, eher die Beobachtung im Taskmanager beim Testen vom ersten obigen Beispiel bei Fensterskalierung.)
 
05.03.2008  
 



waitEnd in Beta15?
 
05.03.2008  
 




RGH
iF
waitEnd in Beta15?


Ja!
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
05.03.2008  
 




RGH
RGH
iF
waitEnd in Beta15?


Ja!


... allerdings vorerst nur im Interpreter.
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
05.03.2008  
 



Jaja, treib mich ruhig in den Wahnsinn...
 
05.03.2008  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

4.866 Views

Untitledvor 0 min.
Sven Bader17.08.2021
Erasmus.Herold08.05.2019
Michael W.05.05.2016
iF13.04.2016
Di più...

Themeninformationen

Dieses Thema hat 2 subscriber:

iF (5x)
RGH (3x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie