mfc源码剖析之——mfc来龙去脉

mfc源码剖析之——mfc来龙去脉

ID:12986988

大小:67.00 KB

页数:13页

时间:2018-07-20

mfc源码剖析之——mfc来龙去脉_第1页
mfc源码剖析之——mfc来龙去脉_第2页
mfc源码剖析之——mfc来龙去脉_第3页
mfc源码剖析之——mfc来龙去脉_第4页
mfc源码剖析之——mfc来龙去脉_第5页
资源描述:

《mfc源码剖析之——mfc来龙去脉》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、MFC源码剖析之——MFC来龙去脉.txt熬夜,是因为没有勇气结束这一天;赖床,是因为没有勇气开始这一天。朋友,就是将你看透了还能喜欢你的人。MFC源码剖析之——MFC来龙去脉以传统的C/SDK撰写Windows程序,最大的好处是可以清楚看见整个程序的来龙去脉和消息动向,然而这些重要的动线在MFC应用程序中却隐晦不明,因为它们被ApplicationFramework包起来了。这一章主要目的除了解释MFC应用程序的长像,也要从MFC源代码中检验出一个Windows程序原本该有的程序进入点(WinMain

2、)、视窗类别注册(RegisterClass)、窗口产生(CreateWindow)、消息循环(MessageLoop)、窗口函数(WindowProcedure)等等动作,抽丝剥茧彻底了解一个MFC程序的诞生与结束,以及生命过程。先来看个一般的C/SDKWindows程序:////////////////////////////////////////////////////////////////Generic.cpp一般的windows程序流程演示#includeLRESUL

3、TCALLBACKMyWinProc(HWND,UINT,WPARAM,LPARAM);//○6intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnShowCmd){WNDCLASSwc;wc.cbClsExtra=0;wc.cbWndExtra=0;wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);wc.hCursor=LoadCursor(N

4、ULL,IDC_ARROW);wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);wc.hInstance=hInstance;wc.lpfnWndProc=MyWinProc;wc.lpszClassName="generic";wc.lpszMenuName=NULL;wc.style=CS_VREDRAW

5、CS_HREDRAW;//窗口的样式RegisterClass(&wc);//注册窗口类○1HWNDhWnd;hWnd=CreateWindow("generic",

6、"Title",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);//产生窗口○2ShowWindow(hWnd,SW_NORMAL);//显示窗口○3UpdateWindow(hWnd);//更新窗口○4MSGmsg;while(GetMessage(&msg,NULL,0,0)){TranslateMessage(&msg);DispatchMes

7、sage(&msg);}//消息循环○5return0;}LRESULTCALLBACKMyWinProc(HWNDhwnd,//窗口句柄UINTuMSG,//消息标志符WPARAMwParam,//消息的第一个参数LPARAMlParam//消息的第二个参数){switch(uMSG){caseWM_LBUTTONDOWN://鼠标左键点击MessageBox(hwnd,"点击","HelloWorld",MB_OK);break;caseWM_CLOSE://窗口被关闭消息if(IDYES==Mes

8、sageBox(hwnd,"是否真的要关闭窗口?","提示",MB_YESNO)){DestroyWindow(hwnd);}break;caseWM_PAINT://窗口被绘制时消息HDChDc;PAINTSTRUCTps;hDc=BeginPaint(hwnd,&ps);TextOut(hDc,0,10,"第一行字符",10);EndPaint(hwnd,&ps);break;caseWM_DESTROY://窗口被销毁是消息PostQuitMessage(0);//有了这个才可以使while(Ge

9、tMessage(&MSG,,,))为假break;default://处理我不感兴趣的消息returnDefWindowProc(hwnd,uMSG,wParam,lParam);}return0;}从上述的原码中可以看出windows程序设计有个基本的脉络:RegisterClass(WNDCLASS*)→CreateWindow→ShowWindow→UpdateWindow→MessageLoop→Windowprocedure。但

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。