18. 按钮控件

emWin提供了三种按键式的控件,分别是:按钮(Button)、复选框(Checkbox)和单选按钮(Radio button)。本章我们先学习使用按钮控件。

按钮控件主要用于触屏设备的交互,可以说是用户最重要的界面元素之一。按钮控件具有输入焦点, 所以也可以响应GUI_KEY_SPACE和GUI_KEY_ENTER键盘消息。按钮中可以显示文本,也可以用位图贴图,甚至可以更改按钮形状。

emWin中的按钮样式如图 18‑1所示。
在这里插入图片描述
图 不同效果的按钮样式 中左侧是不带皮肤的经典按钮样式,右侧是V5.28版本以后自带皮肤效果的按钮样式。

按钮控件支持三种通知代码,以区分不同的按钮动作。如表格 按钮支持的通知代码 所示。
在这里插入图片描述
这三种通知代码是作为WM_NOTIFY_PARENT消息的一部分发送到其父窗口的。当用户点击按钮后, 窗口管理器向父窗口发送WM_NOTIFY_PARENT消息时,会在消息结构的Data.v成员中附加相应的通知代码, 用户程序可以读取此成员来检测不同的按钮动作以及实现各种功能。

按钮控件支持输入焦点,支持键盘或其他类似键盘的外部输入设备对按钮的控制。如果按钮控件已被聚焦, 那它可以接收表格 按钮控件支持的键盘消息 中的按键消息。
在这里插入图片描述
18.1. 创建按钮控件
18.1.1. 按钮控件API
按钮控件的 API 函数较多,这里我们只列出一些比较常用的,见表格 按钮API函数 。完整的API函数请查阅emWin官方手册。
在这里插入图片描述
18.1.2. 按钮控件创建函数
18.1.2.1. BUTTON_CreateEx()
在指定位置创建指定大小的按钮控件。

代码清单:按钮-1 按钮创建函数

BUTTON_Handle BUTTON_CreateEx(int x0, int y0, int xSize, int ySize,
                            WM_HWIN hParent, int WinFlags,
                            int ExFlags, int Id);
  1. x0: 按钮控件在父坐标中的最左侧像素;

  2. y0: 按钮控件在父坐标中的最顶侧像素;

  3. xSize: 按钮的水平尺寸,以像素为单位;

  4. ySize: 按钮的垂直尺寸,以像素为单位;

  5. hParent: 父窗口句柄。如果为0,则将桌面窗口作为其父窗口;

  6. WinFlags: 窗口创建标志。由于控件本质上是窗口,所以按钮控件在创建时可以使用几乎所有的窗口创建标志。 这些标志中按钮最常用的是WM_CF_SHOW。全部创建标志请参考emWin手册的窗口管理器章节;

  7. ExFlags: 预留,未使用;

  8. 控件ID号 。

返回值:创建成功后返回已创建的按钮控件句柄,创建失败则返回0。

18.1.2.2. BUTTON_CreateIndirect()
代码清单:按钮-2 对话框方式创建按钮函数

BUTTON_Handle BUTTON_CreateIndirect(const GUI_WIDGET_CREATE_INFO *pCreateInfo,
                                    WM_HWIN hWinParent, int x0,
                                    int y0, WM_CALLBACK * cb);
  1. pCreateInfo: 指向GUI_WIDGET_CREATE_INFO结构的指针;

  2. hParent: 父窗口的句柄;

  3. x0: 按钮控件在父坐标中的最左边像素;

  4. y0: 按钮控件在父坐标中的最顶部像素;

  5. cb: 回调函数指针。

此函数的第一个参数指向的是 代码清单:控件基础-3 的资源表结构,但不使用其中的Flag参数和para参数。

18.2. 按钮控件基础实验
接下来我们来讲解如何以对话框的方式间接创建一个按钮控件,通过API函数直接创建的实验可参考官方例程WIDGET_ButtonSimple.c,例程路径如下:

SeggerEval_WIN32_MSVC_MinGW_GUI_V548\Sample\Tutorial\WIDGET_ButtonSimple.c

18.2.1. 代码分析
18.2.1.1. 创建对话框
代码清单:按钮-3 创建对话框(ButtonDLG.c文件)

/* 控件ID */
#define ID_FRAMEWIN_0 (GUI_ID_USER + 0x00)
#define ID_BUTTON_0 (GUI_ID_USER + 0x01)
#define ID_BUTTON_1 (GUI_ID_USER + 0x02)
#define ID_BUTTON_2 (GUI_ID_USER + 0x03)

/* 资源表 */
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
   
    {
    FRAMEWIN_CreateIndirect, "Framewin", ID_FRAMEWIN_0, 0, 0, 800,
    480, 0, 0x0, 0 },
    {
    BUTTON_CreateIndirect, "Button0", ID_BUTTON_0, 10, 30, 160, 48,
    0, 0x0, 0 },
    {
    BUTTON_CreateIndirect, "Button1", ID_BUTTON_1, 10, 138, 160, 48,
    0, 0x0, 0 },
    {
    BUTTON_CreateIndirect, "Button2", ID_BUTTON_2, 50, 246, 80, 80,
    0, 0x0, 0 },
};

/**
* @brief 以对话框方式间接创建控件
* @note 无
* @param 无
* @retval hWin:资源表中第一个控件的句柄
*/
WM_HWIN CreateFramewin(void)
{
   
    WM_HWIN hWin;

    hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(
        _aDialogCreate), _cbDialog, WM_HBKWIN, 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pdfview.ocx控件是用于在应用程序中显示PDF文件的控件。要下载pdfview.ocx控件,您可以按照以下步骤进行操作: 1. 打开您选择的浏览器,进入搜索引擎网站,如Google、百度等。 2. 在搜索框中输入“pdfview.ocx控件下载”并点击搜索按钮。 3. 在搜索结果中,找到可靠的、来自官方网站或权威下载站点的下载链接。建议选择官方网站或具有良好口碑的下载站点,以确保下载的文件是安全可靠的。 4. 点击下载链接,可能需要先同意或确认相关条款和条件。 5. 下载完成后,找到下载文件所在的文件夹,解压缩(如果有压缩文件)。 6. 找到解压后的pdfview.ocx文件,并将其复制到您的项目所在的目录中。确保将文件保存在正确的位置,以便在开发或运行应用程序时能够正确引用。 7. 打开您的项目,在需要使用pdfview.ocx控件的窗体或页面上添加控件。 8. 配置和设置pdfview.ocx控件的属性,以满足您的应用程序的需求。您可以设置控件的外观、行为和其他属性,例如指定要显示的PDF文件路径、设置缩放比例等。 9. 在应用程序中调用pdfview.ocx控件的相关方法和事件,以实现预览、打开、关闭或浏览PDF文件的功能。 总之,下载pdfview.ocx控件需要确保从可靠渠道获取文件,并按照步骤将控件添加到项目中。通过配置和调用控件的相关属性、方法和事件,您可以在应用程序中实现PDF文件的预览和浏览功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值