天天看點

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理

本章節為大家講解GUIX複選框的使用。通過複選框的回調事件實作複選框選中和取消選擇狀态的功能處理。

23.1初學者重要提示

23.2 GUIX Studio視窗控件每個參數的含義

23.3 GUIX Studio複選框控件每個參數的含義

23.4 GUIX Studio設定視窗回調事件

23.5 GUIX回調事件處理

23.6 實驗例程設計架構

23.7 實驗例程

23.8 總結

23.1 初學者重要提示

  1. 務必看第11章學習GUIX Studio的使用方法和第12章學習GUIX Studio生成的代碼移植到硬體平台的方法。
  2. 本章講解的複選框回調事件處理本質是複選框父視窗的回調函數裡面處理按鈕按下消息。

23.2 GUIX Studio視窗控件每個參數的含義

GUIX Studio中視窗控件每個參數的定義如下(了解每個參數的作用,做到心裡有底):

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理
  • Widget Type

控件類型。

  • Windget Name

控件名

  • Widget Id

控件ID

  • User Data

控件使用者資料,通過宏定義GX_WIDGET_USER_DATA使能,隻是個簡單的int型變量。

  • Left
  • Top

視窗左上角位置。

  • Width
  • Height

視窗的寬和高。

  • Border

邊界效果

  • Transparent

設定透明,對應建立标志GX_STYLE_TRANSPARENT。

  • Draw Selected

預設顯示選中狀态。

對應建立标志GX_STYLE_DRAW_SELECTED。

  • Enabled

使能視窗,允許控件接收使用者輸入事件和産生輸出信号。

對應建立标志GX_STYLE_ENABLED。

  • Accepts Focus

使能聚焦,對應标志GX_STATUS_ACCEPTS_FOCUS。

  • Runtime Allocate

使能運作時動态申請和釋放記憶體。

  • Normal fill

正常狀态填充色

  • Seclected fill

選中狀态填充色

  • Disable fill

禁止狀态填充色

  • Template

将目前建立的視窗設定為模闆,可以通過GUIX Studio建立這種模闆

  • Visible At Starup

設定GUIX首先顯示的界面。

  • Draw Function

重繪函數。

  • Event Functiong

事件處理函數。

  • Wallpaper

設定背景圖

  • Title Wallpaper

視窗将平鋪所有配置設定的背景圖到視窗用戶端。

對應宏定義GX_STYLE_TILE_WALLPAPER。

23.3 GUIX Studio複選框控件每個參數的含義

GUIX Studio中複選框控件的參數如下:

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理
  • Widget Type

控件類型。

  • Windget Name

控件名。

  • Widget Id

控件ID

  • User Data

控件使用者資料,通過宏定義GX_WIDGET_USER_DATA使能。

隻是個簡單的int型變量。

  • Left
  • Top

視窗左上角位置。

  • Width
  • Height

視窗的寬和高。

  • Border

邊界效果

  • Transparent

設定透明。

對應建立标志GX_STYLE_TRANSPARENT。

  • Draw Selected

預設顯示選中狀态。

對應建立标志GX_STYLE_DRAW_SELECTED。

  • Enabled

使能視窗,允許控件接收使用者輸入事件和産生輸出信号。

對應建立标志GX_STYLE_ENABLED。

  • Accepts Focus

使能聚焦,對應标志GX_STATUS_ACCEPTS_FOCUS。

  • Runtime Allocate

使能運作時動态申請和釋放記憶體。

  • Normal fill

正常狀态填充色

  • Seclected fill

選中狀态填充色

  • Disable fill

禁止狀态填充色

  • Template

将目前建立的視窗設定為模闆,可以通過GUIX Studio建立這種模闆

  • Visible At Starup

設定GUIX首先顯示的界面。

  • Draw Function

重繪函數

  • Event Functiong

事件處理函數

  • Pushed

設定按鈕在按下或者選中狀态。

對應宏定義GX_STYLE_BUTTON_PUSHED。

  • Toggle

設定按鈕為按下和取消按下兩種狀态,類似Checkbox控件。

對應宏定義GX_STYLE_BUTTON_TOGGLE

  • Radio

類似Radio控件。

對應宏定義GX_STYLE_BUTTON_RADIO。

  • Auto Repeat

長時間按下按鈕,使能連發功能。

對應宏定義GX_STYLE_BUTTON_REPEAT。

  • String ID

按鈕字元ID。

  • Text

按鈕字元内容。

  • Font

按鈕字元字型。

  • Text Align

按鈕字元對齊方式。

  • Normal Text Color

按鈕字元顔色。

  • Selected Text Color

選擇按鈕時,字元顔色。

  • Disabled Text Color

取消按鈕選中時,字元顔色

  • Private Text Copy

使能字元可以動态更新。

  • Unchecked Pixelmap

未選中時位圖

  • Checked Pixelmap

選中時位圖

  • Unchecked Disabled

未選中時禁止态位圖

  • Checked Disabled Pixelmap

選中時禁止态位圖

23.4 GUIX Studio設定視窗回調事件

GUIX Studio的設定方法與第11章一樣,我們這裡把控件的位置和大小做了調整,并為window視窗建立一個回調函數。

新調整的界面效果如下:

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理

23.4.1        視窗事件回調設定

下面我們為視窗控件設定一個Event Function,此功能是視窗的事件回調函數。在這個回調函數裡面,大家可以處理各種事件。

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理

這裡為Event Function設定的回調函數名為_cbEventWindow,然後就可以使用GUIX Studio生成新的代碼。生成的代碼移植到硬體平台的方法看第12章即可。

23.4.2        複選框控件ID設定

注意複選框的ID設定GUIX_ID_Checkbox0,後面要用到:

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理

同樣的設定方法,第2個複選框的ID設定為GUIX_ID_Checkbox1:

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理

23.4.3        複選框控件的圖檔設定

控件的圖檔設定在第22章有詳細說明,本章的添加方法是一樣的。為複選框添加三種狀态的圖檔,每個複選框添加三個:

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理

23.5 GUIX回調事件處理

在GUIX Studio上設定好事件回調函數名後,剩下就是在程式裡面實作事件回調的處理,這裡把實作方法為大家做個說明。

23.5.1        視窗裡事件回調的消息處理(複選框選中和取消)

GUIX Studio視窗上複選框的選中和取消處理要在視窗事件回調函數裡面實作。視窗的Event Function事件回調函數實作架構如下:

UINT _cbEventWindow(GX_WINDOW *widget, GX_EVENT *event_ptr)
{
    switch (event_ptr->gx_event_type)
    {
        /* 控件顯示事件 */
        case GX_EVENT_SHOW:
            break;

        /* 複選框取消選中 */
        case GX_SIGNAL(GUIX_ID_Checkbox0, GX_EVENT_TOGGLE_OFF):
            break;
        /* 複選框選中 */
        case GX_SIGNAL(GUIX_ID_Checkbox0, GX_EVENT_TOGGLE_ON):
            break;

        default:
            return gx_window_event_process(widget, event_ptr);
    }

    return 0;
}      

事件回調函數還有很多其它事件供使用者使用。這個架構基本是固定的,大家直接調用即可,下面舉一個執行個體來說明複選框消息的使用。

23.5.2        視窗裡面複選框消息處理執行個體(重要)

執行個體代碼如下,本章教程配套例子也是用的這個代碼:

/*
*********************************************************************************************************
*    函 數 名: _cbEventWindow
*    功能說明: 視窗window的事件回調函數
*    形    參: widget     視窗句柄 
*             event_ptr  事件指針
*    返 回 值: 傳回0表示成功
*********************************************************************************************************
*/
UINT _cbEventWindow(GX_WINDOW *widget, GX_EVENT *event_ptr)
{

    switch (event_ptr->gx_event_type)
    {
        /* 控件顯示事件 */
        case GX_EVENT_SHOW:

            /* 預設事件處理 */
            gx_window_event_process(widget, event_ptr);
            break;
       
        /* 單選框GUIX_ID_Checkbox0的消息處理 */
        case GX_SIGNAL(GUIX_ID_Checkbox0, GX_EVENT_TOGGLE_OFF):
            bsp_LedOff(2); 
            break;
        
        case GX_SIGNAL(GUIX_ID_Checkbox0, GX_EVENT_TOGGLE_ON):
            bsp_LedOn(2); 
            break;
        
        /* 單選框GUIX_ID_Checkbox1的消息處理 */
        case GX_SIGNAL(GUIX_ID_Checkbox1, GX_EVENT_TOGGLE_OFF):
            bsp_LedOff(4); 
            break;
        
        case GX_SIGNAL(GUIX_ID_Checkbox1, GX_EVENT_TOGGLE_ON):
            bsp_LedOn(4); 
            break;

        default:
            return gx_window_event_process(widget, event_ptr);
    }

    return 0;
}      
  • GX_EVENT_SHOW

視窗(控件)顯示事件。當視窗(控件)顯示時,會産生此消息,既可以附加到一個可見視窗(控件),也可以通過函數gx_widget_show()。視窗(控件)繪制前會産生此消息。

  • gx_window_event_process

用于視窗(控件)的預設事件處理。

  • GX_SIGNAL(GUIX_ID_Checkbox0, GX_EVENT_TOGGLE_OFF)

這裡是複選框GUIX_ID_Checkbox0取消選中的消息處理。檢測到複選框取消選中就會進入到這個消息。

  • GX_SIGNAL(GUIX_ID_Checkbox0, GX_EVENT_TOGGLE_ON)

這裡是複選框GUIX_ID_Checkbox0選中的消息處理。檢測到複選框選中就會進入到這個消息。

  • GX_SIGNAL(GUIX_ID_Checkbox1, GX_EVENT_TOGGLE_OFF)
  • GX_SIGNAL(GUIX_ID_Checkbox1, GX_EVENT_TOGGLE_ON)

這裡是複選框GUIX_ID_Checkbox1的選中和取消選中的消息處理。

針對這個執行個體,推薦大家設定不同的參數看效果,熟練掌握這些函數的用法,這樣用起GUIX也得心應手。

23.6 實驗例程設計架構

本章例程的重點是GUIX定時器更新的實作,任務中專門為視窗設定了一個Event Function事件回調函數。

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理

23.7 實驗例程

(注,如果是電阻屏,需要做觸摸校準,校準方法看本教程附件章節A)

配套例子:

本章節配套了如下兩個例子供大家移植參考:

  • V6-2029_GUIX Checkbox Event Callback

GUIX Studio生成的代碼在硬體平台實際運作的工程,含有GCC,IAR,MDK AC5和AC6四個版本工程。

  • V6-2030_GUIX Studio Checkbox Event Callback

GUIX Studio工程模闆,設計界面後,生成的檔案可直接添加到MDK,IAR和GCC軟體平台使用。

實驗目的:

  1. 本章主要學習GUIX的定時器更新功能。

實驗内容:

  1. 共建立了如下幾個任務,通過按下按鍵K1可以通過序列槽列印任務堆棧使用情況

App Task Start任務  :啟動任務,這裡用作BSP驅動包處理。

App Task MspPro任務 :消息處理,這裡用作LED閃爍。

App Task UserIF任務 :按鍵消息處理。

App Task GUI任務    :GUI應用任務。

App Task STAT任務   :統計任務。

App Task IDLE任務   :空閑任務。

GUIX System Thread  :GUI系統任務。

System Timer Thread任務:系統定時器任務。

實驗效果:

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理

GUIX Studio的界面設計如下:

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理

序列槽列印任務執行情況:

IAR,MDK AC5和AC6工程可以序列槽列印任務執行情況:按開發闆的按鍵K1可以列印,波特率 115200,資料位 8,奇偶校驗位無,停止位 1:

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理

Embedded Studio(GCC)平台的序列槽列印是通過其調試元件SEGGER RTT做的序列槽列印,速度也非常快,列印效果如下:

【STM32F429】第23章 ThreadX GUIX複選框Checkbox回調事件處理

展示裡面有亂碼是因為Embedded Studio不支援中文。

23.8 總結

本章節主要為大家講解了GUIX複選框回調事件處理,大家可以測試複選框其它事件處理效果看看。