天地人1007(
网学)贡献
学好程序设计语言的唯一途径是 上机练习。 你的编程能力与你在
计算机上投入的 时间成正比。
1
第4章 章
Windows 标准控件在可视化编 程中的应用
2
控件是Windows 图形用户界面 控件是 的主要组成部分之一, 的主要组成部分之一,用户通过 操作控件对象完成与应用程序之 间的交互。 间的交互。控件的使用集中体现 了Windows
系统面向对象的特点
3
4.1概述 概述
控件工 具栏
控件接受的消息 主要有单击、 主要有单击、双击 和字符输入等
4
4.1.1 静态控件的特点
主要用途: 显示文本,加载图片、图标等资 主要用途: 显示文本,加载图片、图标等资 源 常用消息
静态控件只用作输出, 因此一般不处理它的消息, 静态控件只用作输出 , 因此一般不处理它的消息 , 但它也有一个BN_CLICKED 的消息。 响应该消息时, BN_CLICKED的消息 但它也有一个 BN_CLICKED 的消息 。 响应该消息时 , 控件的属性必须选中属性窗口Style Style选项页下的 控件的属性必须选中属性窗口 Style 选项页下的 Notify 复 选 框 , 并 且 修 改 其 默 认 的 资 源 标 识 符 IDC_STATIC为其它的值 为其它的值。 IDC_STATIC为其它的值。
静态控件使用CStatic类,CStatic是CWnd类直 接派生来的
5
静态控件类CStatic的成员函数
说明 成员函数 SetBitmap GetBitmap SetIcon GetIcon 指定在静态控件中要显示的位图 获取用SetBitmap设置的位图的句柄 指定在静态控件中要显示的图标资 源 获取用SetIcon设置的图标的句柄
6
得到控件对象3种方法
通过类向导classwizard得到 建立控件指针 ,利用对话框函数得到
CStatic *psc = (CStatic *) GetDlgItem(控件ID); 注意这里是指针
利用控件对象的成员函数
CStatic sc; sc.SubclassDlgItem(控件ID,this) 注意这里是对象
7
4.2.1 静态控件应用举例
本例通过演示位图静态控件的使用方法, 本例通过
演示位图静态控件的使用方法,说明 静态控件消息的强制生成与处理过程, 静态控件消息的强制生成与处理过程,当单击 位图时,就报告该位图的尺寸。 位图时,就
报告该位图的尺寸。
8
主要步骤如下: 主要步骤如下: (1) 创建基于对话框的应用程序 (2) 导入一张 导入一张BMP格式图片。假设位图资源名 格式图片。 格式图片 称为IDB_BITMAP1 称为 (3) 向对话框上放上一个 向对话框上放上一个static TEXT控件,其ID 控件, 控件 为IDC_STATIC_BMP,并设置控件为 ,并设置控件为nofity风 风 并添加CStatic类型成员 类
型成员m_bmp 格,并添加 类型成员 无此风格, 无此风格,静 态控件无法响 应鼠标消息
9
(4) 在OnInitDailog函数中添加如下代码,设置控件为 函数中添加如下代码, 函数中添加如下代码 位图风格, 位图风格,并设置位图 BOOL CMy9_3Dlg::OnInitDialog() { …… // TODO: Add extra initialization here m_bmp.ModifyStyle(0,SS_BITMAP); HBITMAP hBmp=LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1)); m_bmp.SetBitmap(hBmp); return TRUE; }
10
(5) 响应鼠标单击静态控件的消息。为static控件添加 响应鼠标单击静态控件的消息。 控件添加 BN_CLICKED消息的响应 消息的响应 void CMy9_3Dlg::OnStaticBmp() { // TODO: Add your control notification handler code here BITMAP bmp; GetObject(m_bmp.GetBitmap(),sizeof(BITMAP),&;bmp); CString msg; msg.Format("Image Size %d*%d", bmp.bmWidth,bmp.bmHeight); AfxMessageBox(msg); }
11
4.2 按钮控件及其应用 普通按钮 圆按钮 复选框按钮 组框按钮 自绘按钮
12
按钮 控件
4.2.1 按钮控件的创建过程
CButton类的成员函数 类的成员函数Create负责创建按 类的成员函数 负责创建按 钮控件,该函数的声明为: 钮控件,该函数的声明为:
BOOL Create ( LPCTSTR lpszCaption, //指定了按钮显示的正文 指定了按钮显示的正文 DWORD dwStyle, //按钮的风格 按钮