Hi Gernot.
Kann num mit der WinApi ein Fenster erstellen, bewegen und mit WndProc usw. auf dieses "zeichnen".
Jetzt stellt sich mir die Frage, da ich alles in eine Klasse gepackt hab, ob sich das "LRESULT CALLBACK WndProc" auch in diese reinwurschtel l?sst...
Hab igrendwo was gelesen mit einen Trick gehts, das man da einen Pointer auf WndProc macht usw... nur hab ich das wohl net ganz verstanden, wie die das genau meinen, weil das ?ber 10 Ecken war :D
Hast du ne idee?
Geh ich auch recht in der annahme das in der "festen WndProc" es auch reicht wenn da drin steht :
...
case WM_CLOSE:
DestroyWindow(hWnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
..
Und ich dann mit PeekMessage die MSG's abgreife? hab da Funktionen gemacht:
FUNCTION API_PeekMessage: win
INLINE
return PeekMessage(&cWin(win)->msg, cWin(win)->hWnd, 0, 0, PM_REMOVE);
ENDINLINE
ENDFUNCTION
FUNCTION API_Message_WM_MOUSEMOVE: win
INLINE
if (cWin(win)->msg.message == WM_MOUSEMOVE){
return 1;
}else{
return 0;
}
ENDINLINE
ENDFUNCTION
FUNCTION API_DispatchMessage: win
INLINE
DispatchMessage (&cWin(win)->msg);
ENDINLINE
ENDFUNCTION
in der WHILE-WEND Schleife frag ich dann so ab:
Win1 = API_CreateWindow("Test")
LOCAL test$ = "NIX",i
WHILE TRUE
IF API_PeekMessage(Win1)
INC i,1
IF API_Message_WM_MOUSEMOVE(Win1)
test$ = "Maus wurde bewegt!"
ENDIF
API_DispatchMessage(Win1)
ENDIF
PRINT test$,10,10
PRINT i,10,30
SHOWSCREEN
WEND
END
geht auch soweit...
Warum gibtst Du nicht den Message Typ in Peek zur?ck?
WHILE TRUE
PeekMessage(mein_message_type)
SELECT mein_message_type.msg
CASE WM_MOUSEMOVE
...
War ja nur als Test gedacht :nana:
Hab jetzt nurnoch das Problem mit Fenster aktualisieren und den wndproc f?r jedes Fenster!
Hier ein screen:
[attachment deleted by admin]
a Hund bist' scho! =D
Bin ich ja :D
Blo? der Hund brauch ein wenig Hilfe vom anderen Hund ;)
Wegen wndproc problem... wie man das am besten machen k?nnte...
Und wie man am besten Aktuallisiert ohne jeden Durchlauf alles neu zeichen zu m?ssen -> Flackert
Zeichnen, nur bei WM_PAINT
Ja nur kommt WM_PAINT nur, wenn ich das Fenster minimiere und dann wieder Anzeige
oder neu gezeichnet werden soll
Wenn Du neuzeichnen Forcen willst, mach : InvalidateWindow(hwnd);
hab ich gemacht gehabt.. NUR gibts da das problem WANN :)
Wann Du neuzeichnen willst. WM_TIMER ?
wann wird WM_TIMER ausgel?st?
Nichtsdestotrotz hab ich das WndProc problem!