peerconnection_client的MainWnd分析(一)
来源:互联网 发布:vc6.0连接mysql数据库 编辑:程序博客网 时间:2024/06/04 20:10
MainWnd中使用的就是MFC的消息机制,在此复习一下MFC吧
在MainWnd::Create()中,调用RegisterWindowClass():
bool MainWnd::RegisterWindowClass() { if (wnd_class_) return true; WNDCLASSEX wcex = { sizeof(WNDCLASSEX) }; wcex.style = CS_DBLCLKS; wcex.hInstance = GetModuleHandle(NULL); wcex.hbrBackground = reinterpret_cast<HBRUSH>(COLOR_WINDOW + 1); wcex.hCursor = ::LoadCursor(NULL, IDC_ARROW); wcex.lpfnWndProc = &WndProc; //注册消息处理函数 wcex.lpszClassName = kClassName; wnd_class_ = ::RegisterClassEx(&wcex); ASSERT(wnd_class_ != 0); return wnd_class_ != 0;}
MainWnd中发送消息为调用:
PostMessage(wnd_, WM_COMMAND, ...)
其中wnd_为接收消息的窗口句柄,MainWnd中接收消息的函数就是上面注册的WndProc:
LRESULT CALLBACK MainWnd::WndProc(HWND hwnd, UINT msg, WPARAM wp, LPARAM lp) { MainWnd* me = reinterpret_cast<MainWnd*>( ::GetWindowLongPtr(hwnd, GWLP_USERDATA)); if (!me && WM_CREATE == msg) { CREATESTRUCT* cs = reinterpret_cast<CREATESTRUCT*>(lp); me = reinterpret_cast<MainWnd*>(cs->lpCreateParams); me->wnd_ = hwnd; ::SetWindowLongPtr(hwnd, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(me)); } LRESULT result = 0; if (me) { void* prev_nested_msg = me->nested_msg_; me->nested_msg_ = &msg; bool handled = me->OnMessage(msg, wp, lp, &result); if (WM_NCDESTROY == msg) { me->destroyed_ = true; } else if (!handled) { result = ::DefWindowProc(hwnd, msg, wp, lp); } if (me->destroyed_ && prev_nested_msg == NULL) { me->OnDestroyed(); me->wnd_ = NULL; me->destroyed_ = false; } me->nested_msg_ = prev_nested_msg; } else { result = ::DefWindowProc(hwnd, msg, wp, lp); } return result;}
0 0
- peerconnection_client的MainWnd分析(一)
- peerconnection_client简单分析
- peerconnection_client demo总流程(一)
- webrtc之peerconnection_client中三个主要的类
- C++MFC学习心得(三)——PostNcDestroy,~MainWnd(),OnDestroy(),~CWinApp()的区别。。。
- webrtc示例peerconnection_client&server
- peerconnection_client demo总流程(二)
- peerconnection_client demo总流程(三)
- LCD驱动分析(一):时序的分析
- LCD驱动分析(一):时序的分析
- LCD驱动分析(一):时序的分析
- LCD驱动分析(一):时序的分析
- LCD驱动分析(一):时序的分析
- LCD驱动分析(一):时序的分析
- collect一题的分析
- racing一题的分析
- datanode进程的分析(一)
- 一 分页操作的分析:
- 编码中的一些优化技巧
- 搜索 I
- 1021. 个位数统计 (15)
- 1022. D进制的A+B (20)
- 一个简单函数的是如何运行的
- peerconnection_client的MainWnd分析(一)
- web服务器之iis,apache,tomcat三者之间的比较
- 1023. 组个最小数 (20)
- win8如何快速关闭135\445端口,预防onion永恒之蓝病毒
- 2.分析第一个安卓程序
- 从PC机、嵌入式linux、以及android系统的启动过程来总结uboot到底是干嘛的
- iOS中控制器的11中生命周期的调用方法以及使用
- 1024. 科学计数法 (20)
- 1026. 程序运行时间(15)