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),产生消息的控件的句柄
其他的类同