⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 visual c++ mfc 简明教程(4-2).txt

📁 MFC简明教程
💻 TXT
📖 第 1 页 / 共 2 页
字号:
Visual C++ MFC 简明教程(4-2)  作者 Marshall Brain 

原作者姓名 Marshall Brain
介绍
一个简单的MFC程序 

正文

    在本将中,我们将一段一段地来研究上一将中提到的 MFC 应用程序,以便能理解它的结构和概念框架。我们将先介绍 MFC,然后在介绍如何用 MFC 来建立应用程序。

MFC简介
    MFC 是一个很大的、扩展了的 C++ 类层次结构,它能使开发 Windows 应用程序变得更加容易。MFC 是在整个 Windows 家族中都是兼容的,也就是说,无论是 Windows3.x、Windows95 还是 Windows NT,所使用的 MFC 是兼容的。每当新的 Windows 版本出现时,MFC 也会得到修改以便使旧的编译器和代码能在新的系统中工作。MFC 也回得到扩展,添加新的特性、变得更加容易建立应用程序。

    与传统上使用 C 语言直接访问 Windows API相反,使用 MFC 和 C++ 的优点是 MFC 已经包含和压缩了所有标准的“样板文件”代码,这些代码是所有用 C 编写的 Windows 程序所必需的。因此用 MFC 编写的程序要比用C语言编写的程序小得多。另外,MFC 所编写的程序的性能也毫无损失。必要时,你也可以直接调用标准 C 函数,因为 MFC 不修改也不隐藏 Windows 程序的基本结构。

    使用 MFC 的最大优点是它为你做了所有最难做的事。MFC 中包含了上成千上万行正确、优化和功能强大的 Windows 代码。你所调用的很多成员函数完成了你自己可能很难完成的工作。从这点上将,MFC 极大地加快了你的程序开发速度。

    MFC 是很庞大的。例如,版本4.0中包含了大约200个不同的类。万幸的是,你在典型的程序中不需要使用所有的函数。事实上,你可能只需要使用其中的十多个 MFC 中的不同类就可以建立一个非常漂亮的程序。该层次结构大约可分为几种不同的类型的类:

应用程序框架 
图形绘制的绘制对象 
文件服务 
异常处理 
结构 - List、Array 和 Map  
Internet 服务 
OLE 2  
数据库 
通用类 

    在本教程中,我们将集中讨论可视对象。下面的列表给出了部分类:

CObject  
CCmdTarget  
CWinThread  
CWinApp  
CWnd  
CFrameWnd  
CDialog  
CView  
CStatic  
CButton  
CListBox  
CComboBox  
CEdit  
CScrollBar  

    在上面的列表中,有几点需要注意。第一,MFC 中的大部分类都是从基类 CObject 中继承下来的。该类包含有大部分MFC类所通用的数据成员和成员函数。第二,是该列表的简单性。CWinApp 类是在你建立应用程序是要用到的,并且任何程序中都只用一次。CWnd 类汇集了 Windows 中的所有通用特性、对话框和控制。CFrameWnd 类是从 CWnd 继承来的,并实现了标准的框架应用程序。CDialog 可分别处理无模式和有模式两种类型的对话框。CView 是用于让用户通过窗口来访问文档。最后,Windows 支持六种控制类型: 静态文本框、可编辑文本框、按钮、滚动条、列表框和组合框(一种扩展的列表框)。一旦你理解了这些,你也就能更好的理解 MFC 了。MFC 中的其它类实现了其它特性,如内存管理、文档控制等。

    为了建立一个MFC应用程序,你既要会直接使用这些类,而通常你需要从这些类中继承新的类。在继承的类中,你可以建立新的成员函数,这能更适用你自己的需要。你在第一讲中的简单例子中已经看到了这种继承过程,下面会详细介绍。CHelloApp 和 CHelloWindow 都是从已有的 MFC 类中继承的。

设计一个程序
    在讨论代码本身之前,我们需要花些工夫来简单介绍以下 MFC 中程序设计的过程。例如,假如你要编一个程序来向用户显示“Hello World”信息。这当然是很简单的,但仍需要一些考虑。

    “hello world”应用程序首先需要在屏幕上建立一个窗口来显示“hello world”。然后需要实际把“hello world”放到窗口上。我们需要但个对象来完成这项任务:

一个应用程序对象,用来初始化应用程序并把它挂到 Windows 上。该应用程序对象处理所有的低级事件。 
一个窗口对象来作为主窗口。 
一个静态文本对象,用来显示“hello world”。 
    你用 MFC 所建立的每个程序都会包含头两个对象。第三个对象是针对该应用程序的。每个应用程序都会定义它自己的一组用户界面对象,以显示应用程序的输出和收集应用的输入信息。

    一旦你完成了界面的设计,并决定实现该界面所需要的控制,你就需要编写代码来在屏幕上建立这些控制。你还会编写代码来处理用户操作这些控制所产生的信息。在“hello world”应用程序中,只有一个控制。它用来输出“hello world”。复杂的程序可能在其主窗口和对话框中需要上百个控制。

    应该注意,在应用程序中有两种不同的方法来建立用户控制。这里所介绍的是用 C++ 代码方式来建立控制。但是,在比较大的应用程序中,这种方法是不可行的。因此,在通常情况下要使用资源文件的图形编辑器来建立控制。这种方法要方便得多。

理解“hello world”的代码
    下面列出了你在上一讲中已经输入、编译和运行的“hello world”程序的代码。添加行号是为了讨论方便。我们来一行行地研究它,你会更好的理解 MFC 建立应用程序的方式。

    如果你还没有编译和运行该代码,应该按上一讲的方法去做。 

1 //hello.cpp

2 #include <afxwin.h>

3 // Declare the application class
4 class CHelloApp : public CWinApp
5 {
6     public:
7         virtual BOOL InitInstance();
8 };

9 // Create an instance of the application class
10 CHelloApp HelloApp;

11 // Declare the main window class
12 class CHelloWindow : public CFrameWnd
13 { 
14     CStatic* cs;
15     public:
16     CHelloWindow();
17 };

18 // The InitInstance function is called each
19 // time the application first executes.
20 BOOL CHelloApp::InitInstance()
21 {
22     m_pMainWnd = new CHelloWindow();
23     m_pMainWnd->ShowWindow(m_nCmdShow);
24     m_pMainWnd->UpdateWindow();
25     return TRUE;
26 }

27 // The constructor for the window class
28 CHelloWindow::CHelloWindow()
29 { 
30     // Create the window itself
31     Create(NULL, 
32         "Hello World!", 
33         WS_OVERLAPPEDWINDOW,
34         CRect(0,0,200,200)); 
35     // Create a static label
36     cs = new CStatic();
37     cs->Create("hello world",
38         WS_CHILD|WS_VISIBLE|SS_CENTER,
39         CRect(50,80,150,150),
40         this);
41 }
    你把上面的代码看一遍,以得到一整体印象。该程序由六小部分组成,每一部分都起到很重要的作用。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -