最后一个讲解,我们来讲一个按钮的例子加深一下对MFC框架的理解吧。
首先,我们知道关于按钮的类是CButton,派生于CWnd,也是一个窗口类。我们利用这个类定义一个窗口类对象,创建完对象之后,你要产生这个窗口的话还要用到我们之前提过的CreateEx函数,从而生成窗口。
那创建在哪里呢?我们再把图拿出来:
明显,我们想把按钮显示在视窗口上,那么MFC又是采用了一种消息映射机制(可以简单理解成产生消息之后我们可以捕获到这个消息并且去执行相应的操作),那么我们可以在视窗口生成的时候同时生成按钮,这个时候我们注意:
1.视窗口生成的时候会产生WM_CREATE这个消息,然后我们需要一个函数来响应这个消息,那就是OnCreate这个函数啦,我们可以在这里生成我们的按钮。
2.但是我们在CTESTView这个类的主文件(.c)并没有找到OnCreate这个函数,默认是不给的,这个时候我们自行添加,在CLASS VIEW上右键选择CLASS Wizard,选择MESSAGE,这时候我们就可以添加函数啦。
3.添加完之后我们在CTESTView.c这个文件里可以看到OnCreate函数,然后我们来生成这个按钮:
(1)CButton btn;定义一个按钮对象,然后调用其btn.Create。
(2)若是在OnCreate函数里面定义的话,我们可以看到视窗口并没有生成按钮,因为btn此时是个局部对象,函数执行完它的生命周期也就结束了。
(3)在CTESTView这个类的声明中定义,btn便为全局对象了,这时在OnCreate函数用使用btn.Create(),视窗口便可以看到我们的按钮了。
4.最后,看一下Create函数的使用:
BOOL Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd, UINT nID,
CCreateContext* pContext = NULL);
总结:看完实操一遍加深理解,推荐书:孙鑫老师的VC++深入了解,理解完框架和消息映射机制之后后面的学习也就是熟悉使用其他的类而已了~~