读者是可能第一次接触到 MFC 编程,因此首先对工程及工作区的概念及创建方法进行了介
绍。在此基础上通过 AppWizard 工具一步步地创建出的基于单文档(SDI )的 HelloMFC 应
用程序,并对其工程文件的组成及作用进行了说明。针对 HelloMFC 应用程序,介绍了类向
导(ClassWizard )工具的基本用法,接着对程序的运行过程以及应用类(CWinApp )的几个
主要的成员函数进行了解释。由于 HelloMFC 是基于文档视图结构的,接下来对该结构的文
档类和视图类的各自作用及相互之间的关系分别进行了说明,同时对经常用到的单文档
SDI)和多文档(MDI )结构进行了对比。针对框架结构中不可缺少主窗口类(CMainFrame )
(
和子窗口类(CChildFrame ),本章也对它们的功能和使用方法进行了介绍,同时介绍了在框
架窗口使用频率很高的工具栏(Toolbar )和状态栏(StatusBar)也介绍了创建过程和使用方
法,电子时钟(在状态栏中创建一个电子时钟 )例程演示了自定义状态栏的使用方法。最后,
对应用程序框架中的主要对象的关系及相互访问情况进行了总结。
本章阐述的应用程序框架是对话框、控件、文件操作及 Visual C++高级编程的基础,希
望读者能够仔细阅读推敲,并在后面章节的学习过程中能够反复翻阅体会,以便达到对 MFC
应用程序框架的深刻理解。
·41 ·
…………………………………………………………Page 51……………………………………………………………
第 3 章 菜单与加速键
第 3 章 菜单与加速键
菜单是 Windows 程序界面的重要元素,程序的各种操作和功能都是通过单击菜单项完成
的。一个设计合理、功能完善的菜单能极大地方便用户的使用。加速键是菜单的辅助功能,
程序使用者可以通过快捷键直接访问常用的菜单选项。本章就介绍在程序中创建菜单和加速
键的方法。
3。1 消息与事件
Windows 应用程序是通过消息驱动的,因此消息和事件是Windows 程序设计的核心概念。
本节将简要介绍消息和事件的处理过程,为以后的编程实践打下基础。
3。1。1 事件驱动机制
在生活中,人们都会对外界发生的各种各样的和自身相关的刺激做出一定的反应,这就
是所谓的应激性。Windows 系统中也有类似的应激性,也就是本小节要介绍的概念—事件
驱动机制。
Windows 作为一个以图形界面为主的操作系统,主要面向与用户的交互。这个特点决定
了在 Windows 上面运行的程序大部分都要以等待用户输入,并根据用户输入做出相应的操作
为主要运行方式 。因此,用户输入是 Windows 系统中消息和事件的一个主要来源。根据用户
输入做出相应的操作,这个过程称为消息处理的过程。同时 Windows 系统也将系统和程序,
程序和程序之间的相互作用,抽象为另外一类消息和事件。这样程序在运行中与系统环境的
相互作用就体现为接收消息,然后对消息进行处理。这就是事件驱动机制的主要内涵。
Windows 下的应用程序的主要工作是进行消息的循环处理,通过循环等待消息的到来和
事件的发生,然后对不同的消息和事件运行相关的代码,完成相应的操作。
3。1。2 消息和消息映射
Windows 系统中的程序大部分都是通过消息和事件驱动的。为了完成各种功能,Windows
提供了大量的消息。这些消息主要有 3 种类型。
o 标准 Windows 消息:消息名以 WM_ 为前缀的消息(也有例外,如控件通知消息
WM_MAND ),例如 WM_SIZE (改变窗口大小消息)、WM_MOVE (移动窗口
消息)等。
o 控件通知消息:由列表框、按钮等控件或子窗口发给其父窗口的通知消息 ,以
WM_MAND 为消息名,消息中包含有控件通知代码,用以区分不同的控件通知
…………………………………………………………Page 52……………………………………………………………
第 3 章 菜单与加速键
消息。
o 命令消息:命令消息也以 WM_MAND 为消息名,在消息中包含有命令的标识符,
用以区分不同的命令。命令消息主要来自菜单、工具栏和加速键。其中菜单和加速键
消息将是本章要学习的内容。
上面的这 3 类消息在 MFC 中有统一的处理框架,即消息映射机制。消息映射机制将消
息及其处理函数表示成一一对应的表,并对这张表进行分析处理。
CCmdTarget 类的派生类用
于存放消息映射机制,使用消息映射必须在源程序中加入以下两方面内容:
(1)在类的头文件中加入如下语句:
DECLARE_MESSAGE_MAP()
例如在类 CTestApp 的头文件 TestApp。h 中有如下代码段:
class CTestApp : public CWinApp
{
public:
CTestApp();
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTestApp)
public:
virtual BOOL InitInstance();
//}}AFX_VIRTUAL
// Implementation
//{{AFX_MSG(CTestApp)
afx_msg void OnAppAbout();
// NOTE the ClassWizard will add and remove member functions here。
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
DECLARE_MESSAGE_MAP()就添加在 CTestApp 类的定义程序块的末尾。
(2 )在类的实现文件中加入消息映射表:
BEGIN_MESSAGE_MAP(类名; 父类名)
……
消息映射表项
……
END_MESSAGE_MAP()
在 CTestApp 类的实现文件 TestApp。cpp 的开头、常量定义的后面,就有如下消息映射表
的代码:
/////////////////////////////////////////////////////////////////////////////
·43 ·
…………………………………………………………Page 53……………………………………………………………
Visual C++ 6。0 程序设计从入门到精通
// CTestApp
BEGIN_MESSAGE_MAP(CTestApp; CWinApp)
//{{AFX_MSG_MAP(CTestApp)
ON_MAND(ID_APP_ABOUT; OnAppAbout)
// NOTE the ClassWizard will add and remove mapping macros here。
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard file based document mands
ON_MAND(ID_FILE_NEW; CWinApp::OnFileNew)
ON_MAND(ID_FILE_OPEN; CWinApp::OnFileOpen)
// Standard print setup mand
ON_MAND(ID_FILE_PRINT_SETUP; CWinApp::OnFilePrintSet
小说推荐
- C语言游戏编程从入门到精通(PDF格式)
- -Page 1-Page 2-Page 3-Page 4-Page 5-Page 6-Page 7-Page 8-Page 9-Page 10-Page 11-Page 12-Page 13-Page 14
- 其他
- 最新章:第4章
- oracle从入门到精通(PDF格式)
- -Page 1-Oracle 从入门到精通-Page 2-资源来自网络,仅供学习 Oracle 从入门到精通一、SQL 8
- 其他
- 最新章:第37章
- php程序设计简明教程(DOC格式)
- -Page 1-PHP 程序设计简明教程PHP 讲义 第 1 页 共 90 页-Page 2-目录序 4第一章 PHP 简介 6
- 其他
- 最新章:第31章
- VB2008从入门到精通(PDF格式英文版)
- -Page 1(R)The eXperT’s Voice inBeginningVB 2008From Novice to ProfessionalChristian Gross-Page 2-Page 3-Beginning VB 2008From Novice to Professional■C
- 其他
- 最新章:第214章
- C语言设计
- 作者:谭浩强1 C 语言概述1.1 C语言的发展过程1.2 当代最优秀的程序设计语言1.3 C语言版本1.4 C语言的特点1.5 面向对象的程序设计语言1.6 C和C+1.7 简单的C程序介绍1.8 输入和输出函数1.9 C源程序的结构特点1.10书写程序时应遵循的规则1.11C语言的字符集1.12
- 文学名著
- 最新章:第45章
- 设计成婚:不入豪门
- 作者:海未央《设计成婚2:名门新娘》作品介绍《名门新娘》介绍:她是骆家收养的孤女,性格因为受他的影响,变得有些古灵精怪,也懂得是非之分!他说他的一切只为他而努力,可是为什么要拒绝自己呢?什么?没有满十八岁?那今天生日,够十八岁了吧?什么,还太小?太过分了,这不是耍着自己玩吗?嘿嘿,有个邪恶的老师,那
- 魔法玄幻
- 最新章:第196章
- 玄学,从入门到放弃
- 《玄学,从入门到放弃》作者:李传言文案:周诣一手拿着卜卦,一手拿着《演员的自我修养,叹息良久。他本是百年前观天占星的玄术师,谁知却一朝重生现代。他只想平淡地生活下去,可天不遂人愿,他注定将在这末法时代掀起波澜!成就一代影帝!谢千仇沉默地看着他…大师,你卦和书都拿倒了#玄学,从入门到放弃,入土,删库跑
- 魔法玄幻
- 最新章:第86章
- C语言实例教程(PDF格式)
- -Page 1-前 言Visual C+是开发运行于Windows 95和Windows NT环境下的Win32应用程序的可视化编程工具中最重要的成员之一,它为软件开发人员提供了完整的编辑、编译和调试工具和建立于Win32 API(ApplicationProgramming Interface)基
- 其他
- 最新章:第143章
- 要你言听计从
- 作者:决明第一章哈士奇,没有护卫看家的本领,对主人、客人甚至是闯空门的恶人都一样友善,咬着皮球跟小偷一块玩你丢我捡也不用太惊讶,时常被人认为忠诚度不足。贺世祺背靠在冰冷玻璃落地窗前,一整间屋子都是伸手不见五指的黑暗,也好,反正他现在什么也不需要看到,只要耳朵还有听觉就好,顺便听听贴在耳边的手机里还要
- 都市言情
- 最新章:第28章