VC++|VC++ 类向导

目录
【VC++|VC++ 类向导】类向导
接上:VC++简单绘图 MFC消息映射机制 MessageBox函数
接下:VC++消息映射机制 WindowProc的函数(wincore.cpp)
类向导 介绍过如何使用类向导给某个类添加消息响应的处理函数,类向导是Visual C++开发中一个很重要的组成部分。它可以帮助我们创建一个新类,为已有类添加成员变量,添加消息和命令的响应函数,以及虚函数的重写。这里,我们再详细介绍一下类向导所具有的功能。类向导对话框如图所示。
VC++|VC++ 类向导
文章图片


VC++|VC++ 类向导
文章图片
运行,单机左键:
最右侧的“添加类”按钮用来向项目中添加一个新类,可选择四种类型的类进行添加,如图所示。
VC++|VC++ 类向导
文章图片

类向导的功能主要由五个选项卡提供,分别是:命令、消息、虚函数、成员变量和方法。下面就分别介绍这五个选项卡。
1.命令选项卡主要用于添加对菜单、工具栏按钮、控件等所产生的命令消息进行响应的处理函数。
2.通过消息选项卡添加或删除消息处理函数。消息列表框列出了所有针对该类可以处理的消息,下方的“添加自定义消息”按钮可以添加自定义的消息,后面会介绍如何添加自定义消息,以及如何对其进行响应。
3.通过虚函数选项卡对基类的虚函数进行重写,或者删除已重写的虚函数。虚函数列表框列出了所有针对该类可以重写的虚函数。
4.通过成员变量选项卡我们可以加入与对话框上的控件相关联的成员变量,以便程序利用这些成员变量与对话框上的控件进行信息交换。至于如何将变量与控件相关联,后面介绍。
控件ID项显示对话框中所具有的控件的ID号;类型项显示添加的成员变量的类型;成员项显示添加的成员变量的名字。右侧的“添加变量”按钮用于给选定的控件添加成员变量;“添加自定义”按钮用于给类添加不与控件相关联的普通的成员变量。
5.通过方法选项卡可以给指定的类添加各种类型的函数(如静态函数、虚函数等),或者删除函数。
选中某个方法,单击“转到定义”按钮将定位到函数的实现处(即源文件中的相应位置),单击“转到声明”按钮将定位到函数的声明处(即头文件中的相应位置)。现在我们利用了类向导首先给项目Draw的视类CDrawView添加WM_LBUTTONDOWN消息的响应函数,切换到消息选项卡,确保类名选中的是CDrawView,然后在消息列表框中找到WM_LBUTTONDOWN并选中,单击“添加处理程序”按钮,“单击编辑代码”按钮,定位到OnLButtonDown函数的定义处。与前面CMainFrame类的处理一样,在此函数中添加一个显示消息框的函数,代码如下所示。
VC++|VC++ 类向导
文章图片
VC++|VC++ 类向导
文章图片

VC++|VC++ 类向导
文章图片

void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 MessageBox(L"view clicked"); CView::OnLButtonDown(nFlags, point); }

VC++|VC++ 类向导
文章图片

为什么在框架类中捕获这一消息就没有生效呢?前面讲述文档/视类结构时,曾说过视类窗口始终覆盖在框架类窗口之上。我们可以打个比方,框架窗口就像一面墙,而视类窗口就像墙纸,它始终挡在这面墙的前面。那么此时对这面墙的所有操作,其实都是在墙纸上进行的。同样的道理也适用于框架窗口和视窗口。也就是说,所有操作,包括鼠标单击、鼠标移动等操作都只能由视类窗口捕获。这就是为什么在框架类窗口中收不到鼠标左键单击这一消息的原因。
这时,我们可以删除框架类中已经添加的 WM_LBUTTONDOWN 这一消息的响应函数。不过要注意的是,通过 MFC 提供的类向导添加消息响应函数后,类向导会在所选类的头文件和源文件中添加几处相关的信息,后面将介绍通过类向导添加的内容及其所在的位置。因此删除某个消息响应函数时要小心,一定要确保这几处相关代码均被删除。最好不要直接手工删除源代码中的函数定义。可以通过类向导来进行删除,这样就可以把头文件和源文件中所有与此函数相关的信息全部删除了。可以在类视图中右击该函数,点击delete进行删除。
接上:VC++简单绘图 MFC消息映射机制 MessageBox函数 接下:VC++消息映射机制 WindowProc的函数(wincore.cpp)

    推荐阅读