正文

MFC消息映射雏形2006-11-29 12:28:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lost/21014.html

分享到:

MFC消息映射雏形 1.MSGMAP_ENTRY结构与dim(x)宏 MSGMAP_ENTRY{  UINT nMessage;  LONG (*pfn)(HWND, UINT, WPARAM, LPARAM);}; #define dim(x) (sizeof(x) / sizeof(x[0])) 其中,pfn是函数指针,此函数用来处理nMessage消息。 2.组织两个数组, _messageEntries[] 和 _commandEntries[],把欲处理的消息及消息处理函数的关联性建立起来: //消息与处理例程的对照表格struct MSGMAP_ENTRY _messageEntries[] ={ WM_CREATE,  OnCreate, WM_PAINT,  OnPaint, WM_SIZE,  OnSize, WM_COMMAND,  OnCommand, WM_SETFOCUS,  OnSetFocus, ...} //Command-ID与处理例程的对照表格struct MSGMAP_ENTRY _commandEntries[] ={ IDM_ABOUT,  OnAbout, WM_PAINT,  OnPaint, WM_SIZE,  OnSize, WM_COMMAND,  OnCommand, WM_SETFOCUS,  OnSetFocus, ...} 于是窗口映射函数可以这样设计: //窗口函数LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ int i; for(i=0; i<dim(_messageEntries); i++){  //消息对照表  if(message == _messageEntries[i].nMessage)   return( (* _messageEntries[i].pfn)(hWnd, message,wParam, lParam)); } return DefWindowProc(hWnd, message,wParam, lParam));} //OnCommand 处理函数LONG OnCommand(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ int i; for(i=0; i<dim(_commandEntries); i++){  //COMMAND对照表   if(LOWORD(wParam) == _commandEntries[i].nMessage)  return( (* _commandEntries[i].pfn)(hWnd, message,wParam, lParam)); } return DefWindowProc(hWnd, message,wParam, lParam));} LONG OnCreate(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ ...}

阅读(264) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册