第七章用户界面设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DialogBoxParam函数从模版创建有模式对话框, DialogBoxParam函数从模版创建有模式对话框, 函数从模版创建有模式对话框 DlgProc是自定义回调函数 是自定义回调函数, DlgProc是自定义回调函数,负责处理发送给对 话框的消息,返回FALSE FALSE时有管理器执行默认处 话框的消息,返回FALSE时有管理器执行默认处 理; WM_INITDIALOG在对话框显示前发送到 在对话框显示前发送到DlgProc WM_INITDIALOG在对话框显示前发送到DlgProc 来初始化控件
见07ControlsDemo
10
对话框与控件交互
上例中程序资源文件Controls.rc(文件名是用户自定义) 上例中程序资源文件Controls.rc(文件名是用户自定义)包括两 Controls.rc(文件名是用户自定义 个位图和一个图标,ID分别设置为IDB_BITMAP1、IDB_BITMAP2、 分别设置为IDB_BITMAP1 个位图和一个图标,ID分别设置为IDB_BITMAP1、IDB_BITMAP2、 IDI_MAIN,它们是被手工添加到工程中的 IDI_MAIN,它们是被手工添加到工程中的 双击对话框资源,可从其属下对话框中的Font Size重新设置 Font、 双击对话框资源,可从其属下对话框中的Font、Size重新设置 字体及其大小。 字体及其大小。 设置窗口标题栏图标需向窗口发送消息WM_SETICON: wParam指 设置窗口标题栏图标需向窗口发送消息WM_SETICON: wParam指 定图标类型,lParam指定图标句柄(p228): 指定图标句柄(p228) 定图标类型,lParam指定图标句柄(p228): SendMessage(hDlg,WM_SETICON,ICON_BIG,(long)g_hIcon) 在对话框上其他有关控件操作函数(p228) (p228): 在对话框上其他有关控件操作函数(p228):
改变窗口风格:GetWindowLong、SetWindowLong; 改变窗口风格:GetWindowLong、SetWindowLong; 获取窗口ID及句柄:GetDlgCtrID、GetDlgItem; 获取窗口ID及句柄:GetDlgCtrID、GetDlgItem; ID及句柄 向子窗口发消息:SendDlgItemMessage。 向子窗口发消息:SendDlgItemMessage。
15
子窗口控件的使用-列表、 子窗口控件的使用-列表、组合框
提供用户选择的列表, 提供用户选择的列表,可以一次选一个也可以一 次选多个 组合框提供一个列表和一个可供输入的编辑框
Combo box
List Box
16
子窗口控件的使用- 子窗口控件的使用-对话框与控件颜色
设置颜色消息(画对话框前先发送消息) 设置颜色消息(画对话框前先发送消息) 静态文本:WM_CTLCOLORSTATIC 静态文本:WM_CTLCOLORSTATIC 对话框:WM_CTLCOLORDLG 对话框:WM_CTLCOLORDLG 文本编辑控件:WM_CTLEDIT 文本编辑控件:WM_CTLEDIT 按钮控件:WM_CTLCOLORBTN 按钮控件:WM_CTLCOLORBTN 列表框控件:WM_CTLCOLORLISTBOX 列表框控件:WM_CTLCOLORLISTBOX 例: case WM_CTLCOLORDLG: { HDC hdc =(HDC)wParam; ::SetBkColor(hdc, RGB(0xa6,0xca,0xf0)); if((HWND)lParam==::GetDlgItem(hDlg,IDC_AUTHOR)) { SetTextColor(hdc, RGB(0, 0, 0xff));} return (int)g_hBgBrush; } 17
对话框及其工作原理
对话框是应用程序创建的用来接受用户输入的 临时窗口, 临时窗口,通常包括多个子窗口控件来与用户 交互; 交互; 对话框窗口函数也是由User32.dll提供,创建之 提供, 对话框窗口函数也是由 提供 前不需要注册; 前不需要注册; 对话框的类型(p222): 对话框的类型 :
模式对话框(model):在应用程序能继续运行之前, :在应用程序能继续运行之前, 模式对话框 要求用户必须提供信息或取消对话框, 要求用户必须提供信息或取消对话框,应用程序把 模式对话框与不输入附加信息就不能继续执行的命 令一起使用。 令一起使用。 无模式对话框(modeless):允许用户提供信息并返回 无模式对话框 : 前一任务,但不关闭该对话框。 前一任务,但不关闭该对话框。 5
6
对话框的创建
p223获得一个有模式对话框 获得一个有模式对话框。 例p223获得一个有模式对话框。 步骤是: 步骤是:
创建Win32工程 创建Win32工程 Win32 向工程添加资源脚本文件, 向工程添加资源脚本文件,插入一个对话框资源双 击对话框把ID改成IDD_MAIN ID改成 击对话框把ID改成IDD_MAIN 实现程序的两个函数WinMain WinMain和 实现程序的两个函数WinMain和DlProc
子窗口控件的用法实例
p220-221(ChildWnd)程序运行结果图 p220-221(ChildWnd)程序运行结果图
子窗口控件也是窗口,大部分窗口函数它都可以 子窗口控件也是窗口, 运用, EnableWindow、ShowWindow等 运用,如EnableWindow、ShowWindow等 4
11
控件概述 控件概述
控件工具栏
控件接受的消息 主要有单击、 主要有单击、双击 和字符输入等 都可用手动方式 拖入对话框
12
常用子窗口控件
子窗口 控件 单选框 复选框 静态控件 组合框 列表框
13
子窗口控件的使用-选择框
设置单选按钮或复选框状态函数: 设置单选按钮或复选框状态函数: BOOL CheckDlgButton(hDlg, nIDButton, uCheck ) uCheck 用BST_CHECKED(选中状态 BST_INDETERMINATE复 选中状态), 选中状态 复 选框的灰化或BST_UNCHECKED(未选中状态 也可以用向子 未选中状态), 选框的灰化或 未选中状态 窗口发送BM_GETCHECKED消息的方法来检测, 消息的 消息的方法来检测, 窗口发送 消息的方法来检测 wParam参数中放置需要设置的状态。 参数中放置需要设置的状态。 参数中放置需要设置的状态 判断是或复选按钮 UNIT IsDlgButtonChecked(hDlg, nIDButton) 函数返回值和uCheck 意义相同 函数返回值和 14
对话框及其工作原理
应用程序一般用DialogBoxParam或CreateDialogBox函 应用程序一般用DialogBoxParam或CreateDialogBox函 DialogBoxParam 数来创建对话框; 数来创建对话框; DialogBoxParam用来创建模式对话; DialogBoxParam用来创建模式对话; 用来创建模式对话 CreateDialogBox用来创建无模式对话框。 CreateDialogBox用来创建无模式对话框。 用来创建无模式对话框 创建对话框的第一步是创建对话框模版, 创建对话框的第一步是创建对话框模版,它定义了对话 框的基本属性:高度、宽度及其中包含的控件; 框的基本属性:高度、宽度及其中包含的控件; 使用VC++的Insert/Resource菜单命令可以非常容易的 使用VC++的Insert/Resource菜单命令可以非常容易的 VC++ 加入对话框资源. 加入对话框资源.
7
8
Байду номын сангаас 9
对话框与控件交互
控件是Windows 图形用户界面的主要组成部分之一; 控件是Windows 图形用户界面的主要组成部分之一; 用户通过操作控件对象完成与应用程序之间的交互; 用户通过操作控件对象完成与应用程序之间的交互; 控件的使用集中体现了Windows 系统面向对象的特点; 控件的使用集中体现了Windows 系统面向对象的特点; 子窗口控件是为对话框设计的,可进行可视化创建,逐 子窗口控件是为对话框设计的,可进行可视化创建, 个拖入对话框中 适当位置; 适当位置; P225例说明这 P225例说明这 一交互特性 的设计过程。 的设计过程。
子窗口控件的使用-静态控件
静态控件是基于Static类的控件, 静态控件是基于Static类的控件,它并不向 Static类的控件 主窗口发送WM_COMMAND消息; WM_COMMAND消息 主窗口发送WM_COMMAND消息; 它的功能是显示文本或图形,图形为图标时, 它的功能是显示文本或图形,图形为图标时, 它具有风格SS_ICON, 使用位图时具有 它具有风格SS_ICON, SS_BITMAP风格 风格; SS_BITMAP风格; 程序中使用STM_SETIMAGE STM_SETIMAGE来消息来设置新的 程序中使用STM_SETIMAGE来消息来设置新的 图片,消息的wParam wParam参数指定图片格式 图片,消息的wParam参数指定图片格式 IMAGE_ICON; IMAGE_BITMAP, IMAGE_CURSOR, IMAGE_ICON; p226(See Example p226-7) lParam指定图片的句柄 指定图片的句柄( lParam指定图片的句柄(The last parameter SendDlgItemMessage(…)p226 )p226in SendDlgItemMessage( )p226-7)。
子窗口空间运行原理
应用程序可以直接使用类名创建窗口(子窗口控件), 应用程序可以直接使用类名创建窗口(子窗口控件), 如下程序创建一个标准按钮(注意其中参数的使用方法) 如下程序创建一个标准按钮(注意其中参数的使用方法) #define IDC_BUTTON 10 BOOL CMainWindow::OnCreate(LPCREATESTRUCT //使用系统创建窗口函数创建窗口 lpCreateStruct) //使用系统创建窗口函数创建窗口 ::CreateWindowEx(0,“button Start button”, Start”, { ::CreateWindowEx(0, button ,“Start , WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,50,50, 80,30,m_hWnd,(HMENU)IDC_BUTTON, AfxGetApp()AfxGetApp()->m_hInstance, NULL); return TRUR; } 3
第七章 用户界面设计
1
对话框与子窗口控件
Windows内部定义了许多窗口类称为子窗口控件 Windows内部定义了许多窗口类称为子窗口控件 User32.dll为应用程序注册的子窗口控件共 为应用程序注册的子窗口控件共6 User32.dll为应用程序注册的子窗口控件共6个,创建 前不需要再注册: 前不需要再注册: 按钮(BUTTON)--用户点击可提供输入的子窗口 按钮(BUTTON)--用户点击可提供输入的子窗口 (BUTTON)-列表框(LISTBOX)--提供一个可供选择的列表 列表框(LISTBOX)--提供一个可供选择的列表 (LISTBOX)-文本框(EDIT)--用于编辑文本 (EDIT)-文本框(EDIT)--用于编辑文本 组合框(COMBOBOX)--由一个列表框和编辑控件组合而成 (COMBOBOX)-组合框(COMBOBOX)--由一个列表框和编辑控件组合而成 滚动条(SCROLLBAR)--用于显示比客户区大的数据对象 (SCROLLBAR)-滚动条(SCROLLBAR)--用于显示比客户区大的数据对象 静态文本框(STATIC)--用于显示静态文本信息 (STATIC)-静态文本框(STATIC)--用于显示静态文本信息 除静态文本框外,以上控件收到用户输入后会向主窗口 除静态文本框外, 发送WM_COMMAND WM_COMMAND消息 发送WM_COMMAND消息 2