1.首先看看HANDLE_MSG消息分流器:
#define HANDLE_MSG(hwnd,message,fn) case (message): return HANDLE_##message((hwnd),(wParam),(lParam),(fn))
就拿WM_COMMAND来说,替换后就成为case ( WM_COMMAND): return HANDLE_WM_COMMAND((hwnd),(wParam),(lParam),( Main_OnCommand))
2.那 HANDLE_WM_COMMAND 怎么定义呢?在windowsx.h有:
#define HANDLE_WM_COMMAND(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(LOWORD(wParam)),(HWND)(lParam),(UINT)HIWORD(wParam)),0)
再次替换之后就成为:(( Main_OnCommand)( (hwnd), ( int)(LOWORD(wParam )), ( HWND)(lParam), (UINT)HIWORD(wParam)),0)
3.对应关系为void Main_OnCommand(HWND hwnd, int id , HWND hwndCtl, UINT codeNotify)
在看看WM_COMMAND的定义:
HWND hwnd , // handle to window
WM_COMMAND , // the message to send
WPARAM wParam , // notification code and identifier, 高字是消息,低字是产生消息的控件的ID
LPARAM lParam // handle to control (HWND), 产生消息的控件的句柄
其他的类同
#define HANDLE_MSG(hwnd,message,fn) case (message): return HANDLE_##message((hwnd),(wParam),(lParam),(fn))
就拿WM_COMMAND来说,替换后就成为case ( WM_COMMAND): return HANDLE_WM_COMMAND((hwnd),(wParam),(lParam),( Main_OnCommand))
2.那 HANDLE_WM_COMMAND 怎么定义呢?在windowsx.h有:
#define HANDLE_WM_COMMAND(hwnd,wParam,lParam,fn) ((fn)((hwnd),(int)(LOWORD(wParam)),(HWND)(lParam),(UINT)HIWORD(wParam)),0)
再次替换之后就成为:(( Main_OnCommand)( (hwnd), ( int)(LOWORD(wParam )), ( HWND)(lParam), (UINT)HIWORD(wParam)),0)
3.对应关系为void Main_OnCommand(HWND hwnd, int id , HWND hwndCtl, UINT codeNotify)
在看看WM_COMMAND的定义:
HWND hwnd , // handle to window
WM_COMMAND , // the message to send
WPARAM wParam , // notification code and identifier, 高字是消息,低字是产生消息的控件的ID
LPARAM lParam // handle to control (HWND), 产生消息的控件的句柄
其他的类同