@jbg
Zitat:
Bei PeekMessage stimme ich dir zu, aber GetMessage betreibt kein Polling
Tja ich weiß nicht so recht. Woher hast du diese Informationen ??
Ich gehe mal von der Logik aus.
PeekMessage() schaut nur im Queue nach ob eine Message vorhanden ist und liefert diese zurück. Damit könnte das
OS also ein Flag pro Thread verwalten (zB. Zähler) um anzuzeigen das Messages im Queue sind. PeekMessage() in einer Loop würde also die meiste Zeit dieses Flag pollen, sofort zurückkehren und dann wiederum sofort Pollen.
Bei GetMessage() hängt das von der Implementation ab. Da ich die nicht kenne muß ich Annahmen treffen.
Der günstigste Fall nimmt an das GetMessage() so wie oben arbeitet. Also Ereignissorientiert, schön.
Der ungünstige Fall nimmt an das GetMessage() mehr erledigen muß als nur Messages zu holen.
Das GetMessage() noch aus Win2.0 bekannt ist und demzufolge Kompatibilitätsrestriktionen unterworfen ist.
Das GetMessage() als Highlevel Funktion auf LowerLevel
API zurückgreift und einfach in einer Loop per PeekMessage() pollt.
Es steht also 3 zu 1 das GetMessage() pollen KÖNNTE. Also nehme ich an das der schlechteste Fall der ist mit dem ich rechnen muß, also Polling. Nutze ich obigen Weg so stelle ich garantiert auf Ereignissorierntiert um egal ob underlaying GetMessage() pollt oder auf Events aufsetzt. Ich egalisiere den Fakt ob gepollt wird oder nicht.
Gruß Hagen