STM32-EMWINボタンコントロール(14)

EMWI

1.ボタンコントロールの概要

ボタンは一般的に使用されるコントロールで、ボタンにテキストまたはビットマップを表示できます。デフォルトでは、ボタンは図のように表示され
ここに画像の説明を挿入
ます。ボタンのスキンを設定することで、ボタンの表示効果を変更できます。ボタンスキンの場合、図のように表示されます。
ここに画像の説明を挿入

1.通知コード

次のイベントは、ボタンウィジェットによってWM_NOTIFY_PARENTメッセージの一部として親ウィンドウに送信されます。通常、ボタンの機能は、特にGUIBuliderによって生成されたコードで、次の通知コードに従って記述されます。

WM_NOTIFICATION_CLICKED 按钮已被点击。
WM_NOTIFICATION_RELEASED 按钮已被释放。
WM_NOTIFICATION_MOVED_OUT 按钮已被点击,且指针已移出按钮并且没有释放。

2.キーボードの応答

ガジェットに入力フォーカスがある場合、次のキーに反応します

GUI_KEY_ENTER 此类键按下后,按钮认为它被按下并立即释放,然后作出相应反应。
GUI_KEY_SPACE此类键按下后,按钮状态改变为已按下。键释放后,按钮状态改变为未按下。

3.一般的なAPI関数

BUTTON_Create() 创建 BUTTON 小工具
BUTTON_CreateAsChild() 将 BUTTON 小工具创建为子窗口
BUTTON_CreateEx() 创建 BUTTON 小工具
BUTTON_CreateIndirect() 从资源表项创建 BUTTON 小工具
BUTTON_CreateUser() 使用额外字节作为用户数据创建 BUTTON 小工具。
BUTTON_GetBitmap() 返回指向 BUTTON 位图的指针。
BUTTON_GetBkColor() 返回 BUTTON 的背景色。
BUTTON_GetDefaultBkColor() 返回 BUTTON 小工具的默认背景色。
BUTTON_GetDefaultFont() 返回 BUTTON 小工具的默认字体。
BUTTON_GetDefaultTextAlign() 返回 BUTTON 小工具的默认文本对齐方式。
BUTTON_GetDefaultTextColor() 返回 BUTTON 小工具的默认文本颜色。
BUTTON_GetFont() 返回 BUTTON 小工具字体的指针。
BUTTON_GetText() 检索指定 BUTTON 的文本。
BUTTON_GetTextAlign() 返回 BUTTON 文本的对齐方式。
BUTTON_GetTextColor() 返回指定 BUTTON 的文本颜色。
BUTTON_GetUserData() 检索用 BUTTON_SetUserData 设置的数据。
BUTTON_IsPressed() 返回表示按钮是否按下的值。
BUTTON_SetBitmap() 设置显示 BUTTON 时使用的位图。
BUTTON_SetBitmapEx() 设置显示 BUTTON 时使用的位图。
BUTTON_SetBkColor() 设置按钮的背景色。
BUTTON_SetBMP() 设置显示 BUTTON 时使用的位图。
BUTTON_SetBMPEx() 设置显示 BUTTON 时使用的位图。
BUTTON_SetDefaultBkColor() 设置 BUTTON 小工具的默认背景色。
BUTTON_SetDefaultFont() 设置 BUTTON 小工具的默认字体。
BUTTON_SetDefaultTextAlign() 设置 BUTTON 小工具的默认文本对齐方式。
BUTTON_SetDefaultTextColor() 设置 BUTTON 小工具的默认文本颜色
BUTTON_SetFocussable() 设置接收输入焦点的能力。
BUTTON_SetFont() 选择文本的字体。
BUTTON_SetPressed() 将按钮的状态设置为按下或未按下。
BUTTON_SetReactOnLevel() 将所有 BUTTON 小工具设置为对水平做出反应。
BUTTON_SetStreamedBitmap() 设置显示 BUTTON 小工具时使用的位图。
BUTTON_SetStreamedBitmapEx() 设置显示 BUTTON 小工具时使用的位图。
BUTTON_SetText() 设置文本。
BUTTON_SetTextAlign() 设置 BUTTON 文本的对齐方式。
BUTTON_SetTextColor() 设置文本的颜色。
BUTTON_SetTextOffset() 根据当前的文本对齐方式设置,调节按钮文本的位置。
BUTTON_SetUserData() 设置 BUTTON 小工具的额外数据。

2.ボタン制御の基本ルーチン

#include "DIALOG.h"
#include "ButtonUse.h"
#include "led.h" //包含 LED 和 BEEP 头文件
#include "beep.h"
#define ID_FRAMEWIN_0 (GUI_ID_USER + 0x00)
#define ID_BUTTON_0 (GUI_ID_USER + 0x01)
#define ID_BUTTON_1 (GUI_ID_USER + 0x02)
//对话框资源表
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = 
{
    
    
{
    
     FRAMEWIN_CreateIndirect, "Framewin", ID_FRAMEWIN_0, 0, 0, 800, 480, 0, 0x64, 0 },
{
    
     BUTTON_CreateIndirect, "Button", ID_BUTTON_0, 300, 122, 150, 50, 0, 0x0, 0 },
{
    
     BUTTON_CreateIndirect, "Button", ID_BUTTON_1, 300, 251, 150, 50, 0, 0x0, 0 },
};
//对话框回调函数
static void _cbDialog(WM_MESSAGE * pMsg) 
{
    
    
WM_HWIN hItem;
int NCode;
int Id;
switch (pMsg->MsgId) 
{
    
    
case WM_INIT_DIALOG: (1)
//初始化对话框
hItem = pMsg->hWin;
FRAMEWIN_SetTitleHeight(hItem, 30);
FRAMEWIN_SetText(hItem, "ALIENTE BUTTON USE");
FRAMEWIN_SetFont(hItem, GUI_FONT_24_ASCII);
FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
FRAMEWIN_SetTextColor(hItem, 0x0000FFFF);
//初始化 BUTTON0
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetFont(hItem, GUI_FONT_24_ASCII);
BUTTON_SetText(hItem, "LED1");
//初始化 BUTTON1
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
BUTTON_SetText(hItem, "BEEP");
BUTTON_SetFont(hItem, GUI_FONT_24_ASCII);
break;
case WM_NOTIFY_PARENT: (2)
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v; (3)
switch(Id) 
{
    
    
case ID_BUTTON_0: //BUTTON_0 的通知代码,控制 LED1
switch(NCode) 
{
    
    
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED: //按钮被按下并释放 (4)
LED1=~LED1; //LED1 反转 (5)
break;
}
break;
case ID_BUTTON_1: //BUTTON_1 的通知代码,控制 BEEP
switch(NCode) 
{
    
    
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
BEEP=~BEEP; //蜂鸣器反转 (6)
break;
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
break;
} }
//创建一个对话框
WM_HWIN CreateFramewin(void) 
{
    
    
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog,WM_HBKWIN, 0, 0);
return hWin;
}
//BUTTO 演示函数
void ButtonUse_Demo(void)
{
    
    
WM_HWIN hWin;
hWin=CreateFramewin();
while(1)
{
    
    
GUI_Delay(100);
} }

(1)WM_INIT_DIALOGメッセージは、ダイアログボックスのウィジェットを初期化するために使用されます。
(2)子コントロールから親コントロールに送信される通知メッセージこのメッセージでは、異なるコントロールの異なるメッセージタイプに応じて異なる処理を行います。
(3)ウィジェットの通知コードは構造体WM_MESSAGEの変数Data.vに配置され、BUTTONボタンの通知コードを取得し、通知コードを分析してBUTTOが押されたか離されたかを判断します。
(4)ボタンボタンを離します。
(5)、LEDスイッチを制御します。
(6)、ブザースイッチを制御します。
ここに画像の説明を挿入
押すと、対応する機能が実行されます。

おすすめ

転載: blog.csdn.net/qq_51963216/article/details/124038843