VC中MFC单文档利用菜单调用窗口过程
VisualStudioC++2018-MFC编程入门.pdf

Visual Studio C++ 2010-MFC编程入门之前言鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了。
但是教程中讲的例子只是一个个简单的例程,并没有可视化窗口。
鸡啄米在这套VS2010/MFC编程入门教程中将会给大家讲解怎样使用VS2010进行可视化编程,也就是基于窗口的程序。
C++编程入门系列主要偏重于理论方面的知识,目的是让大家打好底子,练好内功,在使用VC++编程时不至于丈二和尚摸不着头脑。
本套教程也会涉及到VC++的原理性的东西,同样更重视实用性,让大家学完本套教程以后,基本的界面程序都能很容易编写出来。
VC++简介VC++全称是Visual C++,是由微软提供的C++开发工具,它与C++的根本区别就在于,C++是语言,而VC++是用C++语言编写程序的工具平台。
VC++不仅是一个编译器更是一个集成开发环境,包括编辑器、调试器和编译器等,一般它包含在Visual Studio中。
Visual Studio包含了VB、VC++、C#等编译环境。
当然我们在使用VC++ 6.0的时候为了轻便,总是只单独安装VC++ 6.0。
但自微软2002年发布Visual 以来,微软建立了在.NET框架上的代码托管机制,一个项目可以支持多种语言开发的组件,VC++同样被扩展为支持代码托管机制的开发环境,所以.NET Framework是必须的,也就不再有VC++的独立安装程序,不过可以在安装Visual Studio时只选择VC++进行安装。
VC++版本的选择:VS2010因为VC++ 6.0以后的版本不再有独立的安装程序,所以鸡啄米在教程中将不会称VC++ 6.0以后的版本为VC++ 7.0等等,而是用VC++所属的Visual Studio的版本名称代替,比如VS2003。
近些年VC++主要的版本包括:VC++ 6.0、VS2003、VS2005、VS2008和VS2010。
MFC控件使用详细教程

MFC控件使用详细教程MFC(Microsoft Foundation Class)是微软推出的一套用于开发Windows应用程序的类库。
它提供了许多方便易用的控件,可以快速创建用户界面。
本教程将详细介绍如何使用MFC控件来创建Windows应用程序。
第一步:创建一个MFC应用程序项目要使用MFC控件,首先需要创建一个MFC应用程序项目。
在Visual Studio中,选择"文件"->"新建"->"项目",然后选择"MFC应用程序"模板。
在项目设置中,可以选择使用对话框或视图来作为应用程序的主界面。
第二步:设置控件属性第三步:添加控件消息处理程序控件不仅仅可以显示在界面上,还可以响应用户的操作。
例如,当用户点击按钮时,可以执行一些特定的操作。
要实现这个功能,需要添加控件消息处理程序。
可以通过右键单击控件,选择"添加事件处理程序"来添加控件消息处理程序。
在生成事件处理程序的对话框中,可以选择控件的事件(如点击事件、鼠标移动事件等)和消息的处理函数。
在消息处理函数中,可以编写代码来实现特定的功能。
第四步:编写控件的功能代码在控件的消息处理函数中,可以使用MFC类库提供的函数来实现控件的功能。
例如,如果用户点击了按钮控件,可以使用CButton类的GetWindowText函数来获取按钮的文本,并使用CMessageBox类的MessageBox函数来显示一个消息框。
可以使用类似的方式来处理其他控件的事件。
例如,当用户选择了一个列表框中的项时,可以使用CListBox类的GetCurSel函数来获取选择的项的索引,并根据索引来执行特定的操作。
第五步:编译和运行应用程序完成了控件的添加和功能编写后,可以使用Visual Studio的编译和运行功能来编译和运行应用程序。
在编译过程中,会生成可执行文件和相关的依赖文件。
MFC简单的登录对话框

登录对话框我们利用MFC编写一个简单的登录对话框。
主窗体是单文档界面。
程序运行的时候,先弹出一个简单的登录对话框,输入用户名和密码后主窗体显示出来。
1、开打VC++6.0。
点击文件,新建,点击工程中的MFC AppWizard(exe),在右边选择工程保存的位置,并且为工程取好名字。
2、点击确定后,选择单个文档,你可以一直点击下一步,直到完成,或者在这里直接点击完成即可,完成后界面如下。
3、点击工具栏中的“!”号试着编译运行一次,看是否有问题。
如果没有问题,我们继续。
点击左边的ResourceView,在Dialog上面鼠标右键单击弹出一弹出框,单击Insert Dialog。
4、在右边新增的对话框中,适当改变窗口大小,加入静态文本框和文本编辑框。
输入用户名:。
然后回车同样在下面的第二个静态文本框的属性标题改为:输入密码:。
然后回车。
6、在第一个文本编辑框上右键单击,点击属性,把ID框中的IDC_EDIT1改为容易理解的名字,如:IDC_EDIT_NAME,注意前面的IDC_EDIT最好不要去掉,这样容易见名而知义。
同样,对第二个文本编辑框的属性中的IDC_EDIT2改为:IDC_EDIT_PWD7、在对话框上的任何空白的地方右键单击,点击建立类向导。
然后弹出选择建立Create a new class,点击OK。
这是为这个对话框创建一个新的类。
在Name中,为该对话框类取个名字:CDlg_login。
下面的Base class以及Dialog ID不要随便改动。
然后点击OK。
这样新的类CDlg_login就与本对话框建立起了联系。
8、点击OK后,我们并没有退出建立类向导。
点击member variables。
9、左键双击IDC_EDIT_NAME(或者单击后,点击右边的add variables),为IDC_EDIT_NAME增加一个对应在类中的名字:m_login_name。
其他地方不要改动。
MFC使用教程

MFC使用教程第一部分:MFC简介Visual C++ 不仅仅是一个编译器。
它是一个全面的应用程序开发环境,使用它你充分利用具有面向对象特性的C++ 来开发出专业级的Windows 应用程序。
为了能充分利用这些特性,你必须理解C++ 程序设计语言。
掌握了C++,你就必须掌握Microsoft 基本类库(MFC) 的层次结构。
该层次结构包容了Windows API 中的用户界面部分,并使你能够很容易地以面向对象的方式建立Windows 应用程序。
这种层次结构适用于所有版本的Windows 并彼此兼容。
你用MFC 所建立的代码是完全可移植的。
简单介绍MFC的基本概念和术语以及事件驱动程序设计方法。
输入、编译和运行一个简单的MFC程序。
第二部分中将详细解释这些代码。
第三部分讨论了MFC控件和如何定制它们。
什么是MFC?如果你要建立一个Windows 应用程序,应该如何下手?好的开端是从设计用户界面开始。
首先,你要决定什么样的用户能使用该程序并根据需要来设置相应的用户界面对象。
Windows 用户界面有一些标准的控件,如按钮、菜单、滚动条和列表等,这对那些Windows 用户已经是很熟悉了。
要记住的是,作为程序员必须选择一组控件并决定如何把它们安排到屏幕上。
传统上,你需要在纸上做一下用户界面的草图,直到对各元素感到满意为止。
这对于一些比较小的项目,以及一些大项目的早期原型阶段是可以的。
下一步,是要实现代码。
为任何Windows 平台建立应用程序时,程序员都有两种选择:C 或C++。
使用C,程序员是在Windows 应用程序界面( API ) 的水平上编写代码。
该界面是由几百个 C 函数所组成,这些函数在Windows API 参考手册中都有介绍。
对于Windows NT, API 被称为"Win32 API",以区别于其用于Windows 3.1的16位API, Microsoft 也提供了C++ 库,它位于任何Windows API 之上,能够使程序员的工作更容易。
mfc单文档例子

mfc单文档例子以下是一个简单的MFC单文档(SDI)应用程序的示例:1. 首先,创建一个新的MFC应用程序项目。
在Visual Studio中,选择“文件”菜单,然后选择“新建”->“项目”。
在“新建项目”对话框中,选择“MFC应用程序”,然后输入项目名称和位置,并单击“确定”。
2. 在“MFC应用程序向导”中,选择“单文档”作为应用程序类型,并单击“完成”按钮。
3. 在生成的代码中,找到`CMainFrame`类。
这是应用程序的主窗口类。
4. 在`CMainFrame`类的`OnCreateClient`函数中,添加以下代码:```cppvoid CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext pContext){// 创建视图窗口m_(_T("My View"), WS_CHILD WS_VISIBLE WS_BORDERWS_HSCROLL WS_VSCROLL, CRect(0, 0, 800, 600), this,ID_VIEW_WIN);}```5. 在`CMainFrame`类的`OnCreate`函数中,添加以下代码:```cppBOOL CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) {if (CFrameWnd::OnCreate(lpCreateStruct) == -1)return -1;// 创建工具栏和状态栏CToolBarCtrl tb;CRect rect(0, 0, 800, 24);(WS_CHILD WS_VISIBLE CBRS_TOP CBRS_GRIPPERCBRS_TOOLTIPS CBRS_FLYBY, rect, this, ID_VIEW_TB);m_(WS_CHILD WS_VISIBLE CBRS_TOP CBRS_GRIPPER CBRS_TOOLTIPS CBRS_FLYBY, rect, this, ID_VIEW_TB);m_(this);m_(0, ID_VIEW_STATUSBAR, SBPS_STRETCH, 0);m_(1, ID_VIEW_STATUSBAR2, SBPS_STRETCH, 0);m_(2, ID_VIEW_STATUSBAR3, SBPS_STRETCH, 0);m_(0, SBPS_NORMAL);m_(1, SBPS_NORMAL);m_(2, SBPS_NORMAL);m_(0, _T("Ready"));m_(1, _T("Ready"));m_(2, _T("Ready"));return TRUE;}```6. 编译并运行应用程序。
VC6MFC菜单详解

VC6MFC菜单详解⼀、消息路由1、消息的路由:MFC在后台把窗⼝过程函数替换成了AfxWndProc函数,由这个函数对所有的消息进⾏处理,该函数内部将调⽤AfxCallWndProc函数,AfxCallWndProc函数⼜将调⽤WindowProc函数(CWnd类的成员函数),应⽤程序所有类型的消息都会进⼊到这个函数中。
WindowProc函数⼜将调⽤OnWndMsg函数,该函数会对到来的消息进⾏⼀个类型判断:若是标准消息,OnWndMsg函数查找相应的消息映射函数进⾏处理;若是命令消息,就交由OnCommand函数来处理,该函数将完成命令消息的路由;若是通告消息,将交由OnNotify 函数来处理,该函数将完成通告消息的路由。
OnCommand函数和OnNotify函数最后都会调⽤OnCmdMsg函数。
如下图所⽰:2、菜单命令消息路由的具体过程:当单击某个菜单项时,最先接收到这个菜单命令消息的是框架类(Frame类)。
框架类将把接收到的这个消息交给它的⼦窗⼝,即视类(View类)。
视类⾸先根据命令消息映射机制查找⾃⾝是否对此消息进⾏了响应,若响应了,就调⽤相应响应函数对这个消息进⾏处理,消息路由结束;若视类没有对此命令消息做出响应,就交由⽂档类。
⽂档类同样查找⾃⾝是否对这个菜单命令进⾏了响应,若响应了,就由⽂档类的命令消息响应函数进⾏处理,路由过程结束。
若⽂档类也未做出响应,就把这个命令消息交还给视类,视类⼜把该消息交还给框架类。
框架类查看⾃⼰是否对这个命令消息进⾏了响应,若它也没有做出响应。
就把这个菜单命令消息交给应⽤程序类来处理。
因此菜单命令的响应顺序依次是:视类、⽂档类、框架类、应⽤程序类。
⼆、菜单1、菜单项前添加标记”√”(1)、通过菜单项位置索引,在Frame类的OnCreate函数中添加:GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION | MF_CHECKED);说明:GetMenu()获得菜单栏,GetSubMenu(0)获得第⼀个⼦菜单,CheckMenuItem(0,MF_BYPOSITION | MF_CHECKED)为⼦菜单的第⼀个菜单项添加标记。
VC++6[1].0入门【第三章、MFC编程概述】
![VC++6[1].0入门【第三章、MFC编程概述】](https://img.taocdn.com/s3/m/770bb56f58fafab069dc0213.png)
第三章 MFC 应用程序概述第3章 MFC 应用程序概述Microsoft Windows 是微软公司推出的一个应用于微机上的具有图形用户界面的多任务和多窗口的操作系统。
Windows 应用程序也称为窗口应用程序,所有的窗口应用程序都有着相同的窗口风格和菜单结构,用户界面友好,方便用户操作。
本章从剖析窗口应用程序的基本结构入手,继而介绍使用MFC 类库开发的应用程序框架结构,并介绍窗口应用程序运行的核心机制-消息映射。
学习了本章,你将对MFC 应用程序框架结构和运行机制有个整体的了解,为后面进入窗口应用程序开发打下良好的基础。
3.1 窗口应用程序概述窗口应用程序的开发一般采用可视化的面向对象的开发,可选择的窗口应用程序开发语言有Visual C++、Visual Basic 、Visual Java 、Dephi 等等。
无论采用哪一种开发语言,首先要了解窗口应用程序的基本机制。
3.1.1 窗口编程基础窗口应用程序运行于Windows 操作系统,Windows操作系统是一个多任务操作系统,因此窗口应用程序的组成,支持技术,基本运行机制等与DOS 应用程序有着本质的区别。
在学习开发窗口应用程序之前,先要对窗口应用程序有一个概念上的了解。
1. 窗口窗口是应用程序与用户进行交互的界面,应用程序通过窗口传递信息给用户,同样用户通过窗口输入数据,发布命令给应用程序。
Windows 界面包含了丰富的标准用户界面元素,包括窗口、图标、菜单、滚动条、对话框、控件和消息框等。
用户使用这些界面元素可以方便的与应用程序进行交互,一个典型的窗口外观如图3-1所示。
垂直滚动条控制菜单栏标题栏菜单栏关闭按钮最小化按钮最大化按钮客户区VC++6简明教程图3-1 Windows应用程序窗口组成在Windows编程中,各种窗口、菜单、按钮、对话框及程序模块等Windows的规范部件是按“对象”来组织的。
为了提高开发窗口应用程序的效率,微软公司为用户提供了大量能创建上述标准元素的API函数和C++类,并且以Windows API函数库和C++类库的形式提供给用户,以充分满足构成应用程序操作界面的需要。
vc_5菜单和工具条

if(!m_wndToolBar.CreateEx(this,TBSTYLE_FLAT, WS_CHILD|WS_VISIBLE|CBRS_ALIGN_TOP|C BRS_GRIPPER|CBRS_FLYBY|CBRS_SIZE_DY NAMIC) ||!m_wndToolBar.LoadToolBar(IDR_TOOLBAR1)) {TRACE0("Failed to create toolbar\n"); return -1; } RepositionBars(AFX_IDW_CONTROLBAR_FIR ST,AFX_IDW_CONTROLBAR_LAST,0);
工具条执行的功能往往已由相应的菜单实现 了。因此,一般情况下,没有必要为工具栏 设置消息响应函数,而只需为工具条上的按 钮指定正确的ID(按钮要响应函数的菜单调用 者的ID)来保证响应函数的正确调用。
1.创建工具条。 Resource View->右击顶层文件夹->Insert>Toolbar->new 2. 编辑工具栏按钮
void CMenuDlg::OnContextMenu(CWnd* pWnd, CPoint point) { // TODO: Add your message handler code here CMenu menu; menu.LoadMenu(IDR_QUICKMENU); CMenu *pquickmenu= menu.GetSubMenu(0); pquickmenu->TrackPopupMenu (TPM_LEFTALIGN|TPM_RIGHTBUTTON,poi nt.x,point.y,pWnd); }
1.在工程中插入新的菜单
在Workspace的“Resource View”中右击顶层文件夹, 在激活的快捷菜单中选择 “Insert”选项,在弹出对 话框中选“Menu”,单击New 按钮。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VC中MFC单文档利用菜单调用窗口过程
1、先创建一个单文档应用程序,名为:Dialog。
2、打开ResourceView视图,右击Dialog文件夹,选择"插入Dialog",插入一个对话框。
3、双击对话框空白处,弹出"Adding a Class"窗口,选择单选项"Create a new class",弹出"New Class"窗口,在Name框中输入"CCIDD_DIALOG1",单击"OK"。
其中"C"为"类的缩写,"CIDD_DIALOG1"是你自己起的名字。
4、打开ResourceView视图中的Menu文件夹,双击"IDR_MAINFRAME",展开"文件"菜单,右击"新建"菜单项,选择"属性",查看其ID为"ID_FILE_NEW"。
5、单击"查看|建立类向导"菜单项,弹出"MFC ClassWizard"窗口,在第一个选项卡下选择Class name:为"CDialogView"
Object IDs:为"ID_FILE_NEW"
Message:为"COMMAND"
单击"Add Function",在弹出的窗口中单击"OK",返回"MFC ClassWizard"窗口,单击"Edit Code",在函数中添加如下代码:
CCIDD_DIALOG1 dlg;
if(dlg.DoModal()==IDOK)
Invalidate();
并在本窗口顶部添加代码:#include "CIDD_DIALOG1.h" 用以包含对话框头文件。