正在加载图片...
9单元 WINDOWS编程 pFrame->Create(0,T("吹泡泡")); this->m pMainWnd pFr return TRUe //全局应用程序对象 输出:每在窗口客户区按一下鼠标左键,可绘出一个灰色泡泡,其大小是随机确定 的。吹泡泡程序的运行情况见图9-2。口 分析:尽管这是一个非常简单 的MFC程序,却也有几十行代码。这是 因为 Window应用程序要管理远比字符 界面(如本教程前面所用的控制台界面) 复杂的图形用户接口,而且要有多任务 并行处理的能力。但是,随着程序规模 的增大,用MFC编程的优点很快会显 露:由于结构清晰,各部分功能明确, 代码规范,编程和调试的工作量大为减 图9-2吹泡泡程序 该程序声明了两个类,一个是由应用程序类 CWinApp中派生出来的 CMy App类,一个 是从框架窗口 CFrameWnd类派生出来的 CMy Wnd类。MFC的基本类名均以字母C打头 习惯上在为使用MFC编写的应用程序中的类起名时也这么做。 除此而外,在程序中还声明了一个 CMy App类的全局对象 ThisApp 仔细阅读程序还会发现,该程序似乎不完整,其中既没有主函数(在一般的 Windows 程序中应为 Win Main()函数),也没有实现消息循环的程序段。然而,这是一种误解, 因为MFC已经把它们封装起来了。在程序运行时,MFC应用程序首先调用由框架提供的标 准的 Win Main()函数。在 WinMain()函数中,先初始化由 CMy App定义的唯一全局对 象 ThisApp(通过重载的虚函数 InitInstance(),它构造并显示应用程序的主窗口),然后 调用其由 CWinApp类继承的Run()成员函数,进入消息循环。程序结束时时调用 CWinApp 的 ExitInstance()函数退出 因此,应用程序框架不仅提供了构建应用程序所需要的类( CWinAp, CFrameWnd等) 还规定了程序的基本执行结构。所有的应用程序都在这个基本结构的基础上完成不同的功 MFC采用消息映射机制来决定如何处理特定的消息。这种消息映射机制包括一组宏, 用于标识消息处理函数、映射类成员函数和对应的消息等。在类 CMy Wnd的声明中,前面 有axmg标记的成员函数就是消息处理成员函数。如果在程序中用到了消息处理函数,那 么还需对程序执行部分所定义的消息映射进行初始化,这项工作是通过消息映射宏完成的。 消息映射宏就是程序中从 BEGIN MESSAGE MAP()到 END MESSAGE MAP()第 9 单元 WINDOWS 编程 - 178 - pFrame->Create(0,_T("吹泡泡")); pFrame->ShowWindow(m_nCmdShow); this->m_pMainWnd = pFrame; return TRUE; } // 全局应用程序对象 CMyApp ThisApp; 输 出:每在窗口客户区按一下鼠标左键,可绘出一个灰色泡泡,其大小是随机确定 的。吹泡泡程序的运行情况见图 9-2。 分 析:尽管这是一个非常简单 的 MFC 程序,却也有几十行代码。这是 因为 Window 应用程序要管理远比字符 界面(如本教程前面所用的控制台界面) 复杂的图形用户接口,而且要有多任务 并行处理的能力。但是,随着程序规模 的增大,用 MFC 编程的优点很快会显 露:由于结构清晰,各部分功能明确, 代码规范,编程和调试的工作量大为减 少。 该程序声明了两个类,一个是由应用程序类 CWinApp 中派生出来的 CMyApp 类,一个 是从框架窗口 CFrameWnd 类派生出来的 CMyWnd 类。MFC 的基本类名均以字母 C 打头, 习惯上在为使用 MFC 编写的应用程序中的类起名时也这么做。 除此而外,在程序中还声明了一个 CMyApp 类的全局对象 ThisApp。 仔细阅读程序还会发现,该程序似乎不完整,其中既没有主函数(在一般的 Windows 程序中应为 WinMain()函数),也没有实现消息循环的程序段。然而,这是一种误解, 因为 MFC 已经把它们封装起来了。在程序运行时,MFC 应用程序首先调用由框架提供的标 准的 WinMain()函数。在 WinMain()函数中,先初始化由 CMyApp 定义的唯一全局对 象 ThisApp(通过重载的虚函数 InitInstance(),它构造并显示应用程序的主窗口),然后 调用其由 CWinApp 类继承的 Run()成员函数,进入消息循环。程序结束时时调用 CWinApp 的 ExitInstance()函数退出。 因此,应用程序框架不仅提供了构建应用程序所需要的类(CWinApp,CFrameWnd 等), 还规定了程序的基本执行结构。所有的应用程序都在这个基本结构的基础上完成不同的功 能。 MFC 采用消息映射机制来决定如何处理特定的消息。这种消息映射机制包括一组宏, 用于标识消息处理函数、映射类成员函数和对应的消息等。在类 CMyWnd 的声明中,前面 有 afx_msg 标记的成员函数就是消息处理成员函数。如果在程序中用到了消息处理函数,那 么还需对程序执行部分所定义的消息映射进行初始化,这项工作是通过消息映射宏完成的。 消息映射宏就是程序中从 BEGIN_MESSAGE_MAP()到 END_MESSAGE_MAP() 图 9-2 吹泡泡程序
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有