DialogBox als Hauptfenster
-
verstehe ich nicht, es gibt keine standard Window Proc da der Dialog das einzige Fenster ist

-
winexec schrieb:
verstehe ich nicht, es gibt keine standard Window Proc da der Dialog das einzige Fenster ist

doch die standard wnd proc namens DefaultWindowProc meint Martin.
-
durch das return TRUE; am Ende von WM_PAINT wird die Def Wnd Proc sowieso nicht aufgerufen -.-
-
winexec schrieb:
durch das return TRUE; am Ende von WM_PAINT wird die Def Wnd Proc sowieso nicht aufgerufen -.-
omg

-
Ich checks jetzt auch nicht.
CreateDialog()'s DialogProcess() braucht doch außerdem kein DefWindowProc().
-
-
Rabiat39 schrieb:
winexec schrieb:
verstehe ich nicht, es gibt keine standard Window Proc da der Dialog das einzige Fenster ist

doch die standard wnd proc namens DefaultWindowProc meint Martin.
Mein ich meinte das die Orginal Fenster Prozedur, des gesubclassten Fensters nicht aufgerufen wird.
Grundsätzlich:
1. Auch ein Dialog hat eine Fensterprozedur.
2. Diese Dialog fenster Prozedur ist im Windows implementiert und man kommt nicht an sie ran.
3. Diese Fensterprozedur ruft die DialogProc auf, die der User angibt, mach abr seinen eigenen Stiefel zusätzlich.
4. Wenn man also an die Fensterprozedur des Diaoges will bleibt einem nur der Subclass.
5. WM_PAINT kann man nicht subclassen, da man nicht mehrfach BeginPaint EndPaint, beliebig aufrufen kann. Das Paintrect ist nach dem ersten Aufruf nämlich leer! Ohne diese Information kann man WM_PAINT nicht korrekt nutzen.
6. deshalb ruft man eben nicht die orginal WindProc auf, die man sich beim Subclass gemerkt hat.
7. Wenn man einen Subclass durchführt. sollte man DefWindowProc gar nicht benutzen sondern immer die original Fenster Prozedur aufrufen (außer man weiß was man tut)
-
danke für die Infos! Dann benutze ich ab jetzt immer CreateWindow als Hauptfenster wenn ich WM_PAINT benutzen will.
-
winexec schrieb:
danke für die Infos! Dann benutze ich ab jetzt immer CreateWindow als Hauptfenster wenn ich WM_PAINT benutzen will.
Warum? Subclassing ist doch auch nicht schwierig, wenn sich gerade mal um einen Dialog handelt.
-
habe ich noch nie gemacht, und oben hast du geschrieben dass man WM_PAINT nicht subclassen kann?
-
hab außerdem ein geiles workaround gefunden
AnimateWindow mit einer Millisekunde aufrufen und in WM_PRINTCLIENT zeichnen.
-
winexec schrieb:
habe ich noch nie gemacht, und oben hast du geschrieben dass man WM_PAINT nicht subclassen kann?
OK! Ichhabe es falsch ausgedrückt. Mein Fehler.
Wenn Du WM_PAINT subclassed, dann musst Du alles selber machen und darfst die alte Fensterprozedur nicht aufrufen.Da WM_PAINT für einen Dialog sowieso nichts macht außer DefWindowProc aufzurufen, ist das subclassen ein Kinderspiel
