本书为读者提供了一套全面而实用的学习指南,深入浅出地讲解了如何使用MFC进行Windows应用程序开发,特别聚焦于常用控件的应用与技巧。适合初学者和进阶开发者阅读。
### 实用MFC教程——Windows常用控件的使用
#### 一、课程目标与内容概述
本课程旨在帮助初学者掌握Microsoft Foundation Classes (MFC)框架下常用的Windows控件使用方法,具体包括以下几点:
1. **编辑框和普通按钮**:学习如何使用编辑框进行文本输入,并了解普通按钮的基本操作。
2. **单选按钮和复选框**:掌握单选按钮和复选框的使用技巧,以及它们如何帮助用户进行选择。
3. **列表框和组合框**:学会使用列表框展示选项列表,并熟悉组合框在提供下拉菜单方面的应用。
#### 二、控件概念及其分类
##### 控件简介
控件是构成用户界面的重要组成部分,主要用于实现与用户的交互。在MFC中,大多数控件都是从`CWnd`类派生而来,因此本质上也是一种窗口对象。掌握控件的使用可以满足大部分界面设计的需求。
##### 常用控件及其类
- **静态文本(`CStatic`)**:用于显示固定的文本或图形信息。
- **单选按钮(`CButton`)**:一组选项中只能选择一个。
- **图片控件(`CStatic`)**:用于显示位图或图标等图像信息。
- **组框(`CButton`)**:通常用于将相关的单选按钮或复选框组织在一起。
- **编辑框(`CEdit`)**:允许用户输入或编辑文本。
- **组合框(`CComboBox`)**:提供了一个下拉列表供用户选择。
- **命令按钮(`CButton`)**:响应用户的点击事件。
- **列表框(`CListBox`)**:展示一个项目列表供用户选择。
- **复选框(`CButton`)**:多个选项中可以同时选择多项。
- **滚动条(`CScrollBar`)**:帮助用户浏览长文档或列表。
#### 三、控件的创建与访问
##### 创建方式
控件的创建主要有两种方式:
- **静态创建**:直接在对话框模板中添加控件。这种方式较为简单,适用于固定布局的设计。
- **动态创建**:在程序运行时通过代码定义控件并使用`Create`函数创建。这种方式更加灵活,可以适应不同的需求变化。
##### 访问方法
访问控件的方式有三种:
1. **利用对话框的数据交换功能**:适用于静态创建的控件。通过调用`UpdateData()`函数实现数据的同步。
2. **通过控件对象直接访问**:这种方式可以直接操作控件,获取或设置其属性。
3. **利用`CWnd`类的成员函数**:例如使用`GetDlgItem()`获取控件指针。
#### 四、控件的属性与样式
##### General属性
- **ID**: 控件的唯一标识符,用于程序中的访问。需要注意的是,除了`StaticBox`和`GroupBox`外,其他控件的ID应保持唯一。
- **控件可见性**:控制控件是否显示。
- **标识一组中第一个控件**:在一组单选按钮或复选框中,标记第一个控件。
- **分配帮助ID给控件**:用于关联帮助文档。
##### 静态文本控件
- **对齐方式**:如居中显示(`Centervertically`)、禁止换行(`Simple`)等。
- **特殊字符处理**:例如禁用前缀(`Noprefix`)。
- **通知机制**:当控件被选中时发送消息给父窗口(`Notify`)。
- **显示样式**:如凹陷显示(`Sunken`)、添加边框(`Border`)。
##### 图片控件
- **图片类型**:可以选择`Frame`(框)、`Rectangle`(矩形区域)、`Icon`(图标)、`Bitmap`(位图)和`EnhancedMetafile`(增强图元文件)。
- **颜色设置**:设置边框或背景的颜色。
- **ID设置**:对于图标(`Icon`)类型和位图(`Bitmap`),需要设定相应的ID值。
#### 五、CStatic类的动态创建实例
##### 示例代码
```cpp
CStatic m_MyStatic; // 定义成员变量
m_MyStatic.Create(_T(mystatic),
WS_CHILD | WS_VISIBLE | SS_CENTER,
CRect(10, 10, 150, 50),
this);
```
在这个示例中,我们创建了一个名为`m_MyStatic`的静态文本控件。参数解释如下:
- `_T(mystatic)`: 显示的文本。
- `WS_CHILD | WS_VISIBLE | SS_CENTER`: 控件样式,包括子窗口、可见性和居中对齐。
- `CRect(10,