基本控件-按钮

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基本控件——按钮
目录
• 概述与前提 • MiniGUI程序架构(HelloWorld) • • • • • • 窗口 消息及消息队列 对话框 位图,菜单 基本控件 定时器,插入符
基Hale Waihona Puke Baidu控件
目录
控件 静态框 按钮 编辑框 列表框 酷工具栏
基本控件——按钮
要素:
• 按钮是除静态框之外使用最为频繁的一种控件。按钮通常用来为用户提 供开关选择。 • MiniGUI 的按钮可划分为普通按钮、复选框和单选钮等几种类型。用户 可以通过键盘或者鼠标来选择或者切换按钮的状态。用户的输入将使按 钮产生通知消息,应用程序也可以向按钮发送消息以改变按钮的状态。 • 以 CTRL_BUTTON 为控件类名调用 CreateWindow 函数,即可创建按钮控 件。
基本控件——按钮
复选框风格:
• 复选框最常用的两种风格是BS_CHECKBOX 和BS_AUTOCHECKBOX。 • 在使用BS_CHECKBOX 时,应用程序需要自己向该控件发送消息来设定选 中标记; • 而使用BS_AUTOCHECKBOX 风格时,控件会自动在选中和非选中状态之间 切换。
• 其余两种复选框风格是BS_3STATE 和BS_AUTO3STATE,正如它们名字所暗 示的,这两种风格能显示第三种状态——复选框内是灰色的,这种状态 表明该复选框不能被选择或者禁止使用。 • BS_3STATE 和 BS_AUTO3STATE 风格之间的区别和上面一样:前者需要应 用程序来操作其状态,而后者由控件负责状态的自动切换。
基本控件——按钮
编程实例: • 按钮实例
基本控件——按钮
普通按钮:
• 普通按钮是一个矩形,其中显示了通过 CreateWindow 传递的窗口标题。 该矩形占用了在CreateWindow 调用中给出的全部高度和宽度,而文字位 于矩形的中心。
基本控件——按钮
普通按钮风格:
• 按钮控件主要用来触发一个立即回应的动作,并且不会长久保持开关信 息。这种形态的按钮控件有两种窗口风格, 分别叫做BS_PUSHBUTTON 和 BS_DEFPUSHBUTTON。BS_DEFPUSHBUTTON 中的“DEF”代表“默认”。 • 当用来设计对话框时,BS_PUSHBUTTON风格和BS_DEFPUSHBUTTON 风格的 作用不同,具有 BS_DEFPUSHBUTTON 的按钮将是默认接收 ENTER 键输入 的按钮,而不管当前的输入焦点处于哪个控件上。 • 但是当用作普通主窗口的控件时,两种型态的按钮作用相同,只是具有 BS_DEFPUSHBUTTON 风格的按钮的边框要粗一些。
• • • • •
基本控件——按钮
按钮消息:
• 应用程序通过给按钮发送消息来实现如下目的: • 查询/设置复选框或者单选钮的选中状态: • BM_GETCHECK、BM_SETCHECK • 查询/ 设置普通按钮或者复选框的按下或释放状态: • BM_GETSTATE 、BM_SETSTATE • 获取/设置位图按钮上的位图或者图标:BM_GETIMAGE、 • BM_SETIMAGE • 发送 BM_CLICK 模拟用户鼠标的单击操作
基本控件——按钮
单选钮风格:
• 单选按钮有风格BS_RADIOBUTTON 或BS_AUTORADIOBUTTON 两种,后者会 自动显示用户的选择情况,而前者不会。 • 默认情况下,单选按钮沿控件窗口的左边框对齐,并位于控件窗口范围 的顶边和底边之间(垂直居中),在该矩形内的任何地方按下鼠标都产 生通知消息。 • 使用 BS_LEFTTEXT 风格将使单选按钮靠右对齐,并将文本置于按钮的左 边。用于文本对齐的风格 BS_LEFT、BS_CENTER、BS_RIGHT、BS_TOP、 BS_VCENTER、BS_BOTTOM 等可用于单选按钮。 • 另外,使用 BS_PUSHLIKE 风格将使单选按钮以普通按钮的形式显示:选 中时显示为按下状态,未选中时显示为正常状态。 • 单选按钮通常成组使用,同一组单选按钮每一刻只能有一个被选中。在 创建一组单选按钮时,需要设定它们的状态是互斥的, 因此, 要在创 建第一个单选按钮时使用WS_GROUP 风格,以将其设置为该组单选按钮的 “打头按钮”。
基本控件——按钮
单选钮风格:
• • { “button”,//类名 WS_VISIBLE | BS_AUTORADIOBUTTON | BS_CHECKED | WS_TABSTOP | WS_GROUP,//风格 36, 38, 88, 20,//坐标及大小 IDC_LAMIAN,//ID号 “西北拉面”,//名字 0 }
基本控件——按钮
复选框风格:
• { • • • • • • • “button”,//类名 WS_VISIBLE | BS_AUTOCHECKBOX | BS_CHECKED, //风格 170, 64, 50, 20, //坐标及大小 IDC_LA, //ID号 “偏辣”,//名字 0 }
基本控件——按钮
基本控件——按钮
按钮通知码:
• 具有 BS_NOTIFY 风格的按钮可产生的通知码主要有: • • BN_CLICKED:表明用户单击此按钮。该通知码的值为 0,因此,如果要 在按钮的父窗口中处理该按钮发送过来的 BN_CLICKED 通知消息, 只需 判断MSG_COMMAND 消息的 wParam 参数是否等于按钮的标识符即可。该 通知的产生是默认的,将忽略按钮控件的 BS_NOTIFY 风格。 • BN_PUSHED:表明用户将此按钮按下。 • BN_UNPUSHED:表明用户将此按钮释放。 • BN_DBLCLK:表明用户在此按钮上进行了鼠标左键的双击操作。 • BN_SETFOCUS:表明按钮获得了输入焦点。 • BN_KILLFOCUS:表明按钮失去了输入焦点。
练习
• 编写一个带有按钮控件的程序。
答疑时间
Q&A
• 按钮文本会以单行的形式在垂直和水平方向居中显示,不会自动换行。 不过,应用程序也可以通过指定 BS_MULTLINE 风格来指定显示多行文本。
基本控件——按钮
普通按钮风格:
{ "button", WS_VISIBLE | BS_DEFPUSHBUTTON | WS_TABSTOP | WS_GROUP, 80, 220, 70, 28, IDOK, "确定", 0 }
基本控件——按钮
按钮通知码:
static void my_notif_proc (HWND hwnd, int id, int nc, DWORD add_data) { if (nc == BN_CLICKED) { SetWindowText (GetDlgItem (GetParent (hwnd), IDC_PROMPT), prompts [id IDC_LAMIAN]); } }
基本控件——按钮
复选框:
• 复选框是一个文字方块,文字通常出现在复选框的右边(如果你在建立 按钮时指定了BS_LEFTTEXT 风格,那么文字会出现在左边)。 • 复选框通常用于允许用户对选项进行选择的应用程序中。 • 复选框的常用功能如同一个开关:单击一次将显示选中标记,再次单击 则会清除选中标记。
单选钮:
• 单选按钮就像收音机上选台按钮一样,每一个按钮都对应一个频道,而 且一次只能有一个按钮被按下。 • 在对话框中,单选按钮组常常用来表示相互排斥的选项。与复选框不 同,单选按钮的工作方式不同于开关,也就是说,当第二次按单选按钮 时,它的状态会保持不变。 • 单选按钮的形状是一个圆圈,而不是方框,除此之外,它的行为很像复 选框。圆圈内的加重圆点表示该单选按钮已经被选中。
相关文档
最新文档