硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3447|回复: 15
收起左侧

[μCGUI] 請教button 按壓問題 一直按無效 ?

[复制链接]

13

主题

34

回帖

73

积分

初级会员

积分
73
发表于 2016-4-4 13:51:11 | 显示全部楼层 |阅读模式
    我用guibuiler創建一button  希望按壓時能改變 button之背景色 但一直無法實現
    附上生成原碼  請幫我看看哪裡不對  標註(1) (2) 是我添加    謝謝

#include <stddef.h>
#include "GUI.h"
#include "DIALOG.h"

#include "WM.h"
#include "BUTTON.h"
#include "CHECKBOX.h"
#include "DROPDOWN.h"
#include "EDIT.h"
#include "FRAMEWIN.h"
#include "LISTBOX.h"
#include "MULTIEDIT.h"
#include "RADIO.h"
#include "SLIDER.h"
#include "TEXT.h"
#include &quotROGBAR.h"
#include "SCROLLBAR.h"
#include "LISTVIEW.h"

//EventsFunctionList
void OnButtonClicked(WM_MESSAGE * pMsg);
void OnButtonReleased(WM_MESSAGE * pMsg);
void OnButtonMovedOut(WM_MESSAGE * pMsg);
//EndofEventsFunctionList

/*********************************************************************
*
*       static data
*
*********************************************************************/

/*********************************************************************
*
*       Dialog resource
*
* This table conatins the info required to create the dialog.
* It has been created by ucGUIbuilder.
*/

static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
    { FRAMEWIN_CreateIndirect,  "BTN_TEST1",         0,                       0,  0,  800,480,FRAMEWIN_CF_MOVEABLE,0},
    { BUTTON_CreateIndirect,    "OK",                GUI_ID_BUTTON0,          274,146,177,114,0,0}
};

/*****************************************************************
**      FunctionName:void PaintDialog(WM_MESSAGE * pMsg)
**      Function: to initialize the Dialog items
**                                                      
**      call this function in _cbCallback --> WM_PAINT
*****************************************************************/

void PaintDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;

}
/*****************************************************************
**      FunctionName:void InitDialog(WM_MESSAGE * pMsg)
**      Function: to initialize the Dialog items
**                                                      
**      call this function in _cbCallback --> WM_INIT_DIALOG
*****************************************************************/
void InitDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;
    //
    //FRAMEWIN
    //
    FRAMEWIN_SetClientColor(hWin,0x00ffff);
    FRAMEWIN_SetFont(hWin,&GUI_Font24B_ASCII);
    FRAMEWIN_SetTextAlign(hWin,GUI_TA_VCENTER|GUI_TA_CENTER);
    FRAMEWIN_AddCloseButton(hWin, FRAMEWIN_BUTTON_RIGHT, 0);
    FRAMEWIN_AddMaxButton(hWin, FRAMEWIN_BUTTON_RIGHT, 1);
    FRAMEWIN_AddMinButton(hWin, FRAMEWIN_BUTTON_RIGHT, 2);
    FRAMEWIN_SetTitleHeight(hWin,24);
    //
    //GUI_ID_BUTTON0
    //
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,0xc00000);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_PRESSED,0xe0e0e0);
    BUTTON_SetTextColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,0x80ffff);
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),&GUI_Font32B_ASCII);

}

/*********************************************************************
*
*       Dialog callback routine
*/
static void _cbCallback(WM_MESSAGE * pMsg)
{
    int NCode, Id;
    WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId)
    {
        case WM_PAINT:
            PaintDialog(pMsg);
            break;
        case WM_INIT_DIALOG:
            InitDialog(pMsg);
            break;
        case WM_KEY:
            switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
            {
                case GUI_KEY_ESCAPE:
                    GUI_EndDialog(hWin, 1);
                    break;
                case GUI_KEY_ENTER:
                    GUI_EndDialog(hWin, 0);
                    break;
            }
            break;
        case WM_NOTIFY_PARENT:
            Id = WM_GetId(pMsg->hWinSrc);
            NCode = pMsg->Data.v;        
            switch (Id)
            {
                case GUI_ID_OK:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                        GUI_EndDialog(hWin, 0);
                    break;
                case GUI_ID_CANCEL:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                        GUI_EndDialog(hWin, 0);
                    break;
                case GUI_ID_BUTTON0:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_PRESSED,0xe0e0e0);  //---- (1)
                         //   OnButtonClicked(pMsg);
                            break;
                        case WM_NOTIFICATION_RELEASED:                                                            
                            BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,0xc00000); //---(2)
                         //   OnButtonReleased(pMsg);
                            break;
                        case WM_NOTIFICATION_MOVED_OUT:
                         //   OnButtonMovedOut(pMsg);
                            break;
                    }
                    break;

            }
            break;
        default:
            WM_DefaultProc(pMsg);
    }
}

/*********************************************************************
*
*       MainTask
*
**********************************************************************
*/
void MainTask(void)
{
    GUI_Init();
    WM_SetDesktopColor(GUI_WHITE);      /* Automacally update desktop window */
    WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */
    //PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
    //FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);
    //PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
    //BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
    //CHECKBOX_SetDefaultSkin(CHECKBOX_SKIN_FLEX);
    //DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
    //SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
    //SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
    //HEADER_SetDefaultSkin(HEADER_SKIN_FLEX);
    //RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
    while(1)
    {
        GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
              GUI_Delay(500);
    }
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107897
QQ
发表于 2016-4-4 14:16:41 | 显示全部楼层
使用的那个版本,如果是emWin5.28极其以上版本的话,修改button颜色是没用的,因为从这个版本开始,皮肤色是自动使能的。

如果想设置button的颜色的话,可以在GUI_Init()函数调用后,调用BUTTON_SetDefaultSkinClassic()即可
回复

使用道具 举报

13

主题

34

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2016-4-4 16:07:38 | 显示全部楼层
BTN_TEST.rar (3 KB, 下载次数: 103)
請教eric2013: 附上我生成C程序 請幫我添加修改 讓我學習 我是要再V5開發板上運\行 謝謝你
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107897
QQ
发表于 2016-4-4 17:36:19 | 显示全部楼层
把这个函数BUTTON_SetDefaultSkinClassic(),添加在这里就可以了:
1.png
回复

使用道具 举报

13

主题

34

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2016-4-5 10:44:46 | 显示全部楼层
已添加了 ! 但還是一直無法按壓BUTTON 改變背景顏色  是否哪裡還需修改或配置  請eric2013幫幫我  謝謝
回复

使用道具 举报

13

主题

34

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2016-4-5 11:03:19 | 显示全部楼层

回 suifa 的帖子

suifa:   已添加了 ! 但還是一直無法按壓BUTTON 改變背景顏色  是否哪裡還需修改或配置  請eric2013幫幫我  謝謝 (2016-04-05 10:44) 

   在guibuilder 模擬可以運\行  但在V5板子 卻不行 ?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107897
QQ
发表于 2016-4-6 00:41:46 | 显示全部楼层

回 suifa 的帖子

suifa:   在guibuilder 模擬可以運\行  但在V5板子 卻不行 ?  (2016-04-05 11:03) 
明天我测试下。
回复

使用道具 举报

13

主题

34

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2016-4-8 18:38:35 | 显示全部楼层

回 eric2013 的帖子

eric2013:明天我测试下。 (2016-04-06 00:41) 

請問eric2013  在V5開發板上測試BUTTON可以嗎 ? 我一直作不好 ! 很期待你的幫忙  謝謝
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107897
QQ
发表于 2016-4-9 01:29:24 | 显示全部楼层

回 suifa 的帖子

suifa:請問eric2013  在V5開發板上測試BUTTON可以嗎 ? 我一直作不好 ! 很期待你的幫忙  謝謝 (2016-04-08 18:38)
你不提醒我,我都给忘记了,我今天专门测试下,测试好后发个完整的工程上来给你测试。
回复

使用道具 举报

13

主题

34

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2016-4-12 10:35:28 | 显示全部楼层

回 eric2013 的帖子

eric2013:你不提醒我,我都给忘记了,我今天专门测试下,测试好后发个完整的工程上来给你测试。
 (2016-04-09 01:29) 

請問 eric2013 button 按壓在V5板上測試可以了嗎 ? 很期待收到你的工程  謝謝 !!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107897
QQ
发表于 2016-4-13 01:01:56 | 显示全部楼层

回 suifa 的帖子

suifa:請問 eric2013 button 按壓在V5板上測試可以了嗎 ? 很期待收到你的工程  謝謝 !! (2016-04-12 10:35) 
今天上午或者下午肯定给兄弟发个。这两天忙乱了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107897
QQ
发表于 2016-4-13 22:21:06 | 显示全部楼层
弄好了一个,在V5板子上面运行的:
例子: V5-502a_移植步骤_STemWin5.28+uCOS-III+FatFS(含IAR和MDK).rar (7.6 MB, 下载次数: 93)
显示效果:
0.png
回复

使用道具 举报

13

主题

34

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2016-4-13 22:59:06 | 显示全部楼层

回 eric2013 的帖子

eric2013:弄好了一个,在V5板子上面运行的:
例子:
显示效果:

 (2016-04-13 22:21) 

收到了 謝謝 eric2013
但是我把工程load 到 V5 板子 按壓BUTTON 還是沒有任何反應 ?
不知哪裡出問題 ? 在你的 V5 板子可以運\行嗎 ? 幫幫我 ! 謝謝再謝謝
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107897
QQ
发表于 2016-4-14 00:10:56 | 显示全部楼层

回 suifa 的帖子

suifa:


收到了 謝謝 eric2013
但是我把工程load 到 V5 板子 按壓BUTTON 還是沒有任何反應 ?
不知哪裡出問題 ? 在你的 V5 板子可以運\行嗎 ? 幫幫我 ! 謝謝再謝謝
你的是不是电阻屏,先做触摸校准,用网盘里面的这个例子,校准后触摸参数会自动的保存到EEPROM里面,然后你再跑这个例子就可以了。
1.png
回复

使用道具 举报

13

主题

34

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2016-4-14 10:10:44 | 显示全部楼层

回 eric2013 的帖子

eric2013:你的是不是电阻屏,先做触摸校准,用网盘里面的这个例子,校准后触摸参数会自动的保存到EEPROM里面,然后你再跑这个例子就可以了。

 (2016-04-14 00:10) 

可以了 再次感謝你 原來我少作了觸摸校準
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107897
QQ
发表于 2016-4-14 10:11:29 | 显示全部楼层

回 suifa 的帖子

suifa:可以了 再次感謝你 原來我少作了觸摸校準 (2016-04-14 10:10) 
[s:142]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-17 17:26 , Processed in 0.228961 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表