MFC(二) 窗口创建机制编故事(上)
2015-10-19 20:56
288 查看
继续,MFC的第二个机制:窗口创建机制~
讲到窗口创建,不得不再提到Win32的窗口创建。
在Win32里,老师会跟你讲:窗口的创建就像是毕业后自己动手建立属于自己的公司~
当然,一切都要自己来:
而我更喜欢另一个版本:在游戏里创建一个佣兵团
回顾一下Win32的窗口创建之后,我们来了解一下MFC的窗口创建~
(其实学习编程,选择一个为主,但需要涉猎很多其他的知识,最不好的就是学这个看不起学那个的。 例如有的人喜欢用MFC,有的就喜欢用QT,其实两者都要学学。当然,学得不好,相互干扰,但学得好了,那就是交相辉映,互相促进的。 )
简单的说,WIN32像自己造房子或自己装修,什么都得自己来,而MFC就像代理公司,可以帮你做掉很多工作。
还是简单的讲,WIN32的窗口创建就像是在公司里申请笔记本电脑,你先得填申请表
(WNDCLASSEX wce)
然后,领导层层审批,最后审批通过了,财务会让你去设备科配置,
然后你还要去软件科安装软件,紧接着是就是无尽的任务,收邮件,回邮件,处理问题......
好了,我们来看MFC的窗口创建机制:
继续,MFC的第二个机制:窗口创建机制~
讲到窗口创建,不得不再提到Win32的窗口创建。
在Win32里,老师会跟你讲:窗口的创建就像是毕业后自己动手建立属于自己的公司~
当然,一切都要自己来:
注册窗口类: 去工商局注册,填写同样的表(结构体) 名称,表单号...... 注意,填好表一定要交到柜台,让工作人员把信息输入到电脑,记录你的申请号~ |
创建窗口: 租用写字楼,装修 地址、装修风格(WS_OVERLAPPEDWINDOW), 位置及大小(100,100,500,500),等 |
显示窗口:广告,告知业内公司的存在,将公司推向市场 |
消息循环:软件公司正常运行 GetMessage : 销售人员拉单子 TranslateMessage : 需求分析师(架构师) DispatchMessage:调度,工作委派 |
而我更喜欢另一个版本:在游戏里创建一个佣兵团
注册窗口类:去佣兵中心,填写表格,注册佣兵团 团名,团长,副团,联系人..... |
创建窗口: 把佣兵的广告牌 造出来 大小,风格,顶灯,分区,菜单...... |
显示窗口: 通电,广告牌亮起来 |
更新窗口: 略 |
消息循环: 佣兵团正常运营 GetMessage: 看佣兵工会的任务委托,联络人在工会等任务上门 DispatchMessage:接任务,交给团内相应人员去完成 |
OnXxx() :根据不同的消息 做不同的任务 |
回顾一下Win32的窗口创建之后,我们来了解一下MFC的窗口创建~
(其实学习编程,选择一个为主,但需要涉猎很多其他的知识,最不好的就是学这个看不起学那个的。 例如有的人喜欢用MFC,有的就喜欢用QT,其实两者都要学学。当然,学得不好,相互干扰,但学得好了,那就是交相辉映,互相促进的。 )
简单的说,WIN32像自己造房子或自己装修,什么都得自己来,而MFC就像代理公司,可以帮你做掉很多工作。
还是简单的讲,WIN32的窗口创建就像是在公司里申请笔记本电脑,你先得填申请表
(WNDCLASSEX wce)
然后,领导层层审批,最后审批通过了,财务会让你去设备科配置,
HWND hWnd = CreateWindowEx(0,lpClassName,lpWndName,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL,NULL,g_hInstance,NULL); |
好了,我们来看MFC的窗口创建机制:
上一节我们说到黑衣人到特别行动组委托了一个任务, 好吧,要创建一个杀手组织。 老板有钱,但不熟悉业务,需要有代理公司帮助才能创建成功。 | |||||
这一节我们直接进入框架窗口类(我们自己写的代码)然后比上次更细致的关注窗口创建的问题,打开VS,新建WIN32项目(注意是WIN32),可以是空项目 1. 配置3步(ALT+F7进入属性): 1) MFC的使用--在静态库中使用MFC 2)字符集--未设置 3) C/C++->预编译头-----不使用 2. 自己写如下代码: | |||||
#include<afxwin.h> class CMyFrameWnd : public CFrameWnd { }; class CMyWinApp : public CWinApp { public: virtual BOOL InitInstance(); }; CMyWinApp theApp; BOOL CMyWinApp::InitInstance() { CMyFrameWnd *pFrame = new CMyFrameWnd(); pFrame->Create(NULL,"MFCCreate"); //打断点 m_pMainWnd = pFrame; pFrame->ShowWindow(SW_SHOW); pFrame->UpdateWindow(); return TRUE; } | |||||
运行~ 显示窗口~ YEAR~ 在第2句上打上断点,按F5调试~ 再按F11进入Create()函数 | |||||
回到执行小组,在初始化工作完成后,发现客户在任务中有特殊的一些要求:只是简单的说了句要创建一个组织,除了名字是他取的外,其他都完全没有考虑。 好吧,行动小组,上吧! “老王, 先把客户的要求放到我们默认的表格中,发送给’创建1组’”
所以在这里要注意:
回到PreCreateWindow()函数中,把注册后得到的编号(类名)再记录到特别行动组创建1组的文档中,以便于将来的客户服务~ 下面, AfxHookWindowCreate(this); 开始登场! 话说注册完成了,系统分配了空间,建造局会很快依照要求进行建造。 “头儿, 建造局的事我们管不了!”小张报告说; “我知道,不过我们早就在建造局埋了内线,只要建造工作一线束,内线会先控制住局面,把第一手消息传给我们的~”执行组长淡定的回答。 我们来看如何埋内线(钩子Hook)(钩子在Window编程中是强大的,利用钩子可以做一些很过分的事) 累了,明天继续。。。。。。 2015-10-15 22:17:22 |
相关文章推荐
- Visual C++中MFC消息的分类
- MFC中Radio Button的用法详解
- MFC对话框中添加状态栏的方法
- MFC创建右键弹出菜单的方法
- MFC中动态创建控件以及事件响应实现方法
- C++ 关于MFC多线程编程的注意事项
- MFC程序对文件的处理方法
- MFC自定义消息的实现方法
- MFC实现在文件尾追加数据的方法
- MFC之ComboBox控件用法实例教程
- MFC绘制不规则窗体的方法
- IE8引发 VS2005/2008 MFC向导出错的解决方案
- MFC实现全屏功能代码实例
- 使用VS2010创建MFC ActiveX工程项目
- C++中MFC Tab Control控件的使用详解
- MFC程序设计常用技巧汇总
- MFC扩展DLL中导出类和对话框的实现方法
- VC中SDK与MFC的区别浅析
- 浅谈MFC 改变控件大小和位置
- VC MFC非模态对话框的实现方法