MSG Msg whileGet Messagemsg NULL 0 0 Dispatch

  • Slides: 11
Download presentation

… MSG Msg; … while(Get. Message(&msg, NULL, 0, 0)) Dispatch. Message(&msg); winuser. h typedef

… MSG Msg; … while(Get. Message(&msg, NULL, 0, 0)) Dispatch. Message(&msg); winuser. h typedef struct tag. MSG { HWND hwnd; UINT message; 1 до 0 x 3 FF для системных сообщений WPARAM w. Param; LPARAM l. Param; аппаратные программные DWORD time; 0 x 001 WM_CREATE POINT pt; 0 x 200 WM_MOUSEMOVE } MSG, *PMSG, *LPMSG; 0 x 00 F WM_PAINT 0 x 201 WM_LBUTTONDOWN 0 x 005 WM_SIZE … 0 x 113 WM_TIMER …

LRESULT CALLBACK Wnd. Proc( HWND hwnd, UINT msg, WPARAM w. Param, LPARAM l. Param)

LRESULT CALLBACK Wnd. Proc( HWND hwnd, UINT msg, WPARAM w. Param, LPARAM l. Param)

switch(msg) { case WM_DESTROY: Post. Quit. Message(0); return 0; default: return(Def. Window. Proc(hwnd, msg,

switch(msg) { case WM_DESTROY: Post. Quit. Message(0); return 0; default: return(Def. Window. Proc(hwnd, msg, w. Param, l. Param)); } 0 x 0012 WM QUIT

Макрос HANDLE_MSG и структурирование программы /*Оконная функция Wnd. Proc главного окна*/ LRESULT CALLBACK Wnd.

Макрос HANDLE_MSG и структурирование программы /*Оконная функция Wnd. Proc главного окна*/ LRESULT CALLBACK Wnd. Proc(HWND hwnd, UINT msg, WPARAM w. Param, LPARAM l. Param) { switch(msg) { HANDLE_MSG(hwnd, WM_CREATE, On. Create); HANDLE_MSG(hwnd, WM_PAINT, On. Paint); HANDLE_MSG(hwnd, WM_DESTROY, On. Destroy); default: return(Def. Window. Proc(hwnd, msg, w. Param, l. Param)); } }

WINDOWSX. H #define HANDLE_MSG(hwnd, message, fn ) case (message) : return HANDLE_##message ((hwnd), (w.

WINDOWSX. H #define HANDLE_MSG(hwnd, message, fn ) case (message) : return HANDLE_##message ((hwnd), (w. Param), (l. Param), (fn)) HANDLE_MSG(hwnd, WM_PAINT, On. Paint); case (WM_PAINT): return HANDLE_WM_PAINT((hwnd), (w. Param), (l. Param), (On. Paint)); HANDLE_MSG(hwnd, WM_DESTROY, On. Destroy; case (WM_DESTROY): return HANDLE_WM_DESTROY((hwnd), (w. Param), (l. Param), (On. Destroy));

HANDLE WM сооб щение #define WINDOWSX. H HANDLE_WM_DESTROY(hwnd, w. Param, l. Param, fn)((fn)(hwnd), 0

HANDLE WM сооб щение #define WINDOWSX. H HANDLE_WM_DESTROY(hwnd, w. Param, l. Param, fn)((fn)(hwnd), 0 L) case WM_ DESTROY: return(On. Destroy(hwnd), 0 L); case WM_PAINT: return(On. Paint(hwnd), 0 L);

Сообщение Прототип функции WM_CHAR void On. Char(HWND hwnd, UINT ch, int c. Repeat); WM_COMMAND

Сообщение Прототип функции WM_CHAR void On. Char(HWND hwnd, UINT ch, int c. Repeat); WM_COMMAND void On. Command(HWND hwnd, int id, HWND hwnd. Ctl, UINT code. Notify); WM_CREATE BOOL On. Create(HWND hwnd, LPCREATESTRUCT lp. Create. Struct); WM_DESTROY void On. Destroy(HWND hwnd); WM_INITDIALOG BOOL On. Init. Dialog(HWND hwnd, HWND hwnd. Focus, LPARAM l. Param); void On. LButton. Down(HWND hwnd, BOOL f. Double. Click, int x, int y, UINT key. Flags); WM_LBUTTONDOWN WM_MOUSEMOVE void On. Mouse. Move(HWND hwnd, int x, int y, UINT key. Flags); WM_PAINT void On. Paint(HWND hwnd); void On. RButton. Down(HWND hwnd, BOOL f. Double. Click, int x, int y, UINT WM_RBUTTONDOWN key. Flags); WM_TIMER void On. Timer(HWND hwnd, UINT id);