ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
1332
1332
EMPFEHLEN
-
warum erhällt mein fenster kein command ?
winmain mein child
wndclass.lpfnWndProc=childProc;
wndclass.lpszClassName=L"testchild";
RegisterClassEx(&wndclass);
childtest=CreateWindow(L"test",
L"test",WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,300,600,NULL,NULL,hInstance,NULL);
im childproc unter create:
_beginthread(testthread,0,NULL);
im testthread:
UpdateWindow(childtest);
das fenste malt sich aber nicht neu. was ist da faul ?
-
Ein Fenster gehört immer einem Thread. Jeder Thread muss seine eigene MessagePump haben (MessagePump ist Peek/GetMessage, Translate-,DispatchMessage).
Wird das Childfenster in einem Thread erzeugt? Versuche das Childfenster im Hauptthread zu erzeugen, das löst vermutlich die meisten Probleme.
-
wie gesagt ich
erzeuge in der winmein ein hauptfenster und ein childfenster.
die werden sofort angezeigt.
habe nur eine getmessage.
wird das childfester aufgerufen ruft der im create nen _beginthread auf.
daher verstehe ich ja nicht, dass auch nen sendmessage(hwndchild,wm_paint,0,0,);
nicht funktioniert.
habe jetzt rausgefunden, dass einzigste auf was das fenster reagiert ist:
InvalidateRgn
das kann aber doch nicht die lösung sein oder ?
eigentlich müssten doch sendmessage und updatewindow auch funktionieren.
-
UpdateWindow löst ja nur etwas aus, wenn das Fenster als "dirty" markiert ist. Sprich, jemand hat drauf rumgemalt oder etwas verändert.
Ein InvalidateRect (oder InvalidateRgn) machen das. Allein das sollte genügen. Wenn du nach Invalidatexxx direkt UpdateWindow aufrufst, müsste das Fenster danach neu dargestellt sein.
-
ok danke das klappt.
ich habe immer gedacht, nen updatwindow veranlasst immer zum neuzeichen.
warum geht sendmessage(fenster,WM_PAINT,0,0) nicht ?
das müsste doch auch nen repaint auslösen oder ?
-
Jein, WM_PAINT sollte man nie manuell senden. WM_PAINT ist ja "nur" die Aufforderung an das HWND, sich selbst neu darzustellen. Windows übernimmt die neue Zeichnung aber nur, wenn das HWND irgendwo auch einen Bereich als "dirty" gekennzeichnet hat. Alles zur Optimierung
-
ok danke also doch alles nen bisschen anders als java repaint.
Ähnliche Themen
-
childfenster geht nicht mehr auf warum ?
Von cyberds19 im Forum VisualStudio & MFCAntworten: 2Letzter Beitrag: 28.07.08, 16:17 -
Position von Childfenster? - Größe des Fenster fixieren?
Von HCWD im Forum C/C++Antworten: 2Letzter Beitrag: 30.12.07, 14:30 -
UpdateWindow erzeugt keine WM_PAINT
Von saibot83 im Forum VisualStudio & MFCAntworten: 6Letzter Beitrag: 20.10.06, 10:19 -
ChildFenster verschwindet beim Minimieren
Von SabineenibaS im Forum VisualStudio & MFCAntworten: 2Letzter Beitrag: 06.04.06, 09:13 -
Prüfen ob MDI Childfenster geladen ist
Von SeeSharpNewBee im Forum .NET Windows FormsAntworten: 2Letzter Beitrag: 05.09.05, 19:44





Zitieren
Login






