当前位置:数据分析 > VS2019向导_vs2019 使用向导生成一个MFC应用程序

VS2019向导_vs2019 使用向导生成一个MFC应用程序

  • 发布:2023-09-26 02:02

在VS的使用介绍中已经讲了解决方案与工程的概念,这里再重提一下。每个应用程序都作为一个工程来处理,它包含了头文件、源文件和资源文件等,这些文件通过工程集中管理。在VS2010中,工程都是在解决方案管理之下的。一个解决方案可以管理多个工程,可以把解决方案理解为多个有关系或者没有关系的工程的集合。VS2010提供了一个Solution Explorer解决方案浏览器视图,可以显示当前解决方案的内容,当新建一个工程时可以选择新建一个解决方案还是加入当前解决方案。

Xtreme Toolkit Pro是MFC开发中最全面界面控件套包,它提供了Windows开发所需要的11种主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。如果对产品感兴趣的话欢迎下载Xtreme Toolkit Pro最新试用版! 点击获取更多免费Xtreme Toolkit Pro教程、视频、示例!

下图左侧面板中正在显示的视图就是Solution Explorer,视图中有一个解决方案-HelloWorld,此解决方案下有一个同名的工程-HelloWorld。

在应用程序向导生成应用程序后,VS2010会在用户设置的路径下,以解决方案名为名称建立一个目录,里面存放自动生成的文件。

使用VS2010应用程序向导生成单文档应用程序框架

????这里简略演示下怎样生成单文档应用程序框架,让大家先有个直观的了解,有不理解的地方可以留着以后回来再看。下面按照操作步骤一步步讲解:

????? 1.点菜单栏File->New->Project,弹出New Project对话框,我们可以选择工程类型。

??????如果安装完VS2010以后第一启动时已经设置为VC++,则Installed Templates->Visual C++项会默认展开,而如果没有设置VC++,则可以展开到Installed Templates->Other Languages->Visual C++项。因为我们要生成的是MFC程序,所以在“Visual C++”下选择“MFC”,对话框中间区域会出现三个选项:MFC ActiveX Control、MFC Application和MFC DLL。MFC ActiveX Control用来生成MFC ActiveX控件程序。MFC Application用来生成MFC应用程序。MFC DLL用来生成MFC动态链接库程序。当然我们要选择MFC Application。

????? 在对话框下部有Name、Location和Solution name三个设置项。意义如下:Name--工程名,Location--解决方案路径,Solution name--解决方案名称。这里Name我们设为“HelloWorld”,Location设置为“桌面”的路径,Solution name默认和Name一样,当然可以修改为其他名字,这里我们不作修改,也使用“HelloWorld”。点“OK”按钮。

????? 2.这时会弹出“MFC Application Wizard”对话框,上部写有“Welcome to the MFC Application Wizard”,下面显示了当前工程的默认设置。第一条“Tabbed multiple document interface (MDI)”是说此工程是多文档应用程序。如果这时直接点下面的“Finish”按钮,可生成具有上面列出设置的多文档程序。但我们此例是要建立单文档应用程序,所以点“Next”按钮再继续设置吧。

????? 3.接下来弹出的对话框上部写有“Application Type”,当然是让选择应用程序类型,我们看到有四种类型:Single document(单文档)、Multiple documents(多文档)、Dialog based(基于对话框)和Multiple top-level documents。我们选择Single document类型,以生成一个单文档应用程序框架。单文档应用程序运行时是一个单窗口界面。

??????此对话框的“Resource language”还提供语言的选择,这里默认选择英语。“Project style”可选择工程风格,我们选择默认的“Visual Studio”风格。“Use of MFC”有两个选项:Use MFC in a shared DLL(动态链接库方式使用MFC)和Use MFC in a static library(静态库方式使用MFC)。选择Use MFC in a shared DLL时MFC的类会以动态链接库的方式访问,所以我们的应用程序本身就会小些,但是发布应用程序时必须同时添加必要的动态链接库,以便在没有安装VS2010的机子上能够正常运行程序。选择Use MFC in a static library时MFC的类会编译到可执行文件中,所以应用程序的可执行文件要比上种方式大,但可以单独发布,不需另加包含MFC类的库。这里我们使用默认的Use MFC in a shared DLL。点“Next”按钮。

????? 4.此时弹出上部写有“Compound Document Support”的对话框,可以通过它向应用程序加入OLE支持,指定OLE选项的复合文档类型。本例不需要OLE特性,使用默认值“None”。点“Next”按钮。

????? 5.弹出的新对话框上部写有“Document Template Properties”。“File extension”可以设置程序能处理的文件的扩展名。对话框其他选项还可以更改程序窗口的标题。我们都使用默认设置,点“Next”按钮。

????? 6.此时弹出的对话框主题是“Database Support”。用于设置数据库选项。此向导可以生成数据库应用程序需要的代码。它有四个选项:

????? None:忽略所有的数据库支持;

????? Header files only:只包含定义了数据库类的头文件,但不生成对应特定表的数据库类或视图类;

????? Database view without file support:创建对应指定表的一个数据库类和一个视图类,不附加标准文件支持;

???? ?Database view with file support:创建对应指定表的一个数据库类和一个视图类,并附加标准文件支持。

????? 本例选择默认值“None”,不使用数据库特性。点“Next”按钮。

????? 7.这时弹出的对话框是关于“User Interface Features”,即用户界面特性。我们可以设置有无最大化按钮、最小化按钮、系统菜单和初始状态栏等。还可以选择使用菜单栏和工具栏生成简单的应用程序还是使用ribbon。这里我们都选择默认设置。点“Next”进入下一步。

??????8.此时弹出“高级特性”对话框。可以设置的高级特性包括有无打印和打印预览等。在“Number of files on recent file list”项可以设置在程序界面的文件菜单下面最近打开文件的个数。我们仍使用默认值。点“Next”按钮。

??????9.弹出“生成类”对话框。在对话框上部的“生成类”列表框内,列出了将要生成的4 个类:一个视图类(CHelloWorldView)、一个应用类(CHelloWorldApp)、一个文档类(CHelloWorldDoc)和一个主框架窗口类(CMainFrame)。在对话框下面的几个编辑框中,可以修改默认的类名、类的头文件名和源文件名。对于视图类,还可以修改其基类名称,默认的基类是CView,还有其他几个基类可以选择。这里我们还是使用默认设置。点“Finish”按钮。

???? ?应用程序向导最后为我们生成了应用程序框架,并在Solution Explorer中自动打开了解决方案(见上面第一张图)。

??????编译运行生成的程序

??????点菜单中的Build->Build HelloWorld编译程序,然后点Debug->Start Without Debugging(快捷键Ctrl+F5)运行程序,也可以直接点Debug->Start Without Debugging,这时会弹出对话框提示是否编译,选择“Yes”,VS2010将自动编译链接运行HelloWorld程序。结果页面如下所示:

???????终于看见界面了。在以后的教程中会继续讲解各种界面和控件的使用方法。感谢您的阅读,希望这篇文章能带给你一定的帮助!如果这篇文章没能满足你的需求、点击获取更多文章教程!

【MFC】学习MFC day2 vs2019 向导创建MFC应用程序

上一篇 下一篇 我会把完整的源代码文件放在文章后面 刚开始写博客2,3天如有不对和不好的地方欢迎指正。 1、新建MFC应用 2、推荐选择MFC标准的样式 3、选择MainFrame类,当然也可选其他类 4、打开类视图 5、右击View结尾的类点属性,这个类是管界面的,(嗯我是这么理解的), 6、在这里就可以快速添加消息映射函数和对应的宏,就不用像我上一篇博客里面需要自己查手册后手动添加

接下来将是介绍OnDraw()和OnPaint(),以及OnCreate()与Create()的区别

首先 OnDraw()和OnPaint()都是关于窗口绘图的消息映射函数,具有类似的作用。

//有OnPaint()后OnDraw()里面的代码块将不会执行

void CMFCApplication1View::OnPaint()

{

CPaintDC dc(this); // device context for painting

// TODO: 在此处添加消息处理程序代码

// 不为绘图消息调用 CView::OnPaint()

dc.TextOutW(100,100,TEXT("你好,世界"));

}

void CMFCApplication1View::OnDraw(CDC* pDC)

{

MessageBox(TEXT("世界,你好"));//有OnPaint()后此代码块将不会执行

CMFCApplication1Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

if (!pDoc)

return;

// TODO: 在此处为本机数据添加绘制代码

pDC->TextOutW(100, 100, TEXT("世界,你好"));

}

但是,当这2个函数同时出现在CMFCApplication1View类中会出现什么情况呢? 答案是:

这里画出来的却是 你好,世界 注意,这里并不是把世界,你好给遮盖了,而是没有执行OnDraw(CDC* pDC)里面的代码块 MessageBox(TEXT(“世界,你好”)); 这个消息框并没有如期的弹出来

之后是 OnCreate与Create的区别: Create()负责注册并产生窗口,像动态创建控件中的Create()一样,窗口创建之后会向操作系统发送WM_CREATE消息。 OnCreate()不产生窗口,只是在窗口显示前设置窗口的属性如风格、位置等。 OnCreate()是消息WM_CREATE的消息响应(映射)函数。

当框架调用CreateEx (Create 以Ex结尾的是扩展函数 )函数创建窗口时,会首先调用PreCreateWindow(这个函数在CMainFrame类中已经声明)函数。 通过修改传递给PreCreateWindow的结构体类型参数CREATESTRUCT,应用程序可以更改用于创建窗口的属性。在产生窗口之前让程序员有机会修改窗口的外观。 最后再调用CreateWindowEx函数完成窗口的创建。

最后还有一点 这是层次结构图,MessageBox的作用域是在CWindCWnd (这个我已经查过资料了),也就是说CWinApp 这些地方是不能用MessageBox函数的,所以还有种函数是以Afx开头的函数,比如AfxMessageBox函数,这是一个全局函数,也就是在整个大范围内都能用。

最后,真的最后了

感谢大家的翻阅。

附加: 本篇文章源代码

创建项目

选择mfc模板

配置项目

运行

类视图

双击类名即可跳转到类声明所在的.h文件 下面为类中的成员函数,双击即可跳转到相应的定义部分

消息处理的添加

在CMainFrame添加消息处理,程序并没有反应,需要在view层操作上述过程。 在消息列表中找到WM_LBUTTONDOWN消息,添加。 工程文件增加几处改变。 第一处:在框架类头文件中添加了鼠标左键消息函数的函数声明 第二处:在框架类cpp文件中添加了消息映射宏 第三处:在框架列cpp文件中添加了处理鼠标左键消息的函数定义

void CMFCTestView::OnLButtonDown(UINT nFlags, CPoint point)

{

// TODO: 在此添加消息处理程序代码和/或调用默认值

CView::OnLButtonDown(nFlags, point);

CString str;

str.Format(TEXT("x=%d , y=%d "), point.x, point.y);

MessageBox(str);

}

相关文章

最新资讯

热门推荐