_01自己实现简单的消息处理框架模型 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:www.bcdaren.com 联系QQ:1250121864 QQ交流群 :49759272 联系电话:0512-57882866
1、窗口过程的一般框架 WndProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) { 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 1、窗口过程的一般框架 WndProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) { ... switch(Msg) case WM_CREATE: break; } case WM_CLOSE:
2、痛点是什么? 当想要处理的消息越来越多时,这个switch-case结构也会越来 越复杂,维护起来非常麻烦 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 2、痛点是什么? 当想要处理的消息越来越多时,这个switch-case结构也会越来 越复杂,维护起来非常麻烦
3、愿景 1、窗口过程不会随着处理消息的增加而增加,相对固定不变 2、要有一定的灵活性,能够自由的添加消息与其处理逻辑 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 3、愿景 1、窗口过程不会随着处理消息的增加而增加,相对固定不变 2、要有一定的灵活性,能够自由的添加消息与其处理逻辑
4、简单的解决方案 1、typedef LRESULT (*PWNDMSGPROC) \ 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 4、简单的解决方案 1、typedef LRESULT (*PWNDMSGPROC) \ (HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) 2、struct MSGPROC { DWORD Msg; PWNDMSGPROC OnProc; } 3、 MSGPROC gMsgProc[]={xx,xx,xx,xx,...};
5、简化之后的窗口过程 WndProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) { 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 5、简化之后的窗口过程 WndProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) { for(int i=0;i<sizeof(gMsgProc)/sizeof(MSGPROC);i++) if(gMsgProc[i].Msg==Msg) return gMsgProc[i].OnProc(hWnd,Msg,wParam,lParam); } return DefWindowProc(hWnd,Msg,wParam,lParam);
昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 6、课后作业 线上班学员可见