programów Win32 zazwyczaj mają pętlę wiadomość, że pętle wzywającą GetMessage lub PeekMessage, a następnie wywołuje DispatchMessage aby wysłać wiadomość do proceedure okna danego okna.Czy wywołanie funkcji DispatchMessage w programach win32 jest konieczne?
Czy jest jednak taka potrzeba? Czy mogę zamiast tego po prostu zaglądać do obiektu bezpośrednio w pętli komunikatów i wykonywać tam potrzebne akcje bez wywoływania: DispatchMessage? Mówię o przypadkach, w których mam jedno pojedyncze okno bez żadnych okien sterujących, na przykład, jeśli okno jest używane tylko jako okno wyświetlania direct3d, więc wiadomości będą zawsze kierowane do jedynego okna.
W większości jestem ciekawy, ale może to również prowadzić do tego, że niektóre aspekty mojego kodu są również bardziej przejrzyste.
To ma sens, dzięki! – jcoder
'DispatchMessage' oraz' CallWindowProc' również robią rzeczy takie jak rozważanie haków do okien. Nawet z jednym oknem, musisz ich użyć. Uważam, że niektóre wiadomości nie mogą być przetwarzane poprawnie poza 'DispatchMessage', ale nie mam żadnych przykładów z góry mojej głowy. Może rzeczy takie jak 'WM_PAINT'. – tenfour
@tenfour, być może bardziej poprawnie jest powiedzieć, że niektóre wiadomości będą w każdym razie wywoływane przez WindowProc, i nie będzie istnieć jako osobny komunikat w kolejce. W każdym razie WindowProc jest koniecznością. Mimo to te umieszczone w kolejce mogą być obsługiwane w obie strony. Nie mogę wymyślić powodów, dla których ktoś chciałby sobie z nimi poradzić po stronie pompy. –