今天看了windows核心编程。里面用到了HANDLE_##MESSAGE这个宏,特意查看了下,原来如下:
#define chHANDLE_DLGMSG(hWnd, message, fn) /
case (message): return (SetDlgMsgResult(hWnd, uMsg, /
HANDLE_##message((hWnd), (wParam), (lParam), (fn))))
对于HANDLE_##message 中##,实际上编译器对这个符号的处理喊简单,就是讲两个字符串进行连接。
比如当messge = WM_INITDIALOG的时候,他就变成了如下形式:
#define HANDLE_WM_INITDIALOG(hwnd, wParam, lParam, fn) /
(LRESULT)(DWORD)(UINT)(BOOL)(fn)((hwnd), (HWND)(wParam), lParam)
而想上面这些宏都是在windowsx.h中已经定义好了的!!!!
而
SetDlgMsgResult( HWND hwnd, int msg, LONG result );