硬汉嵌入式论坛

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

[μCGUI] ucgui 触摸屏的简单例子 求助

[复制链接]

15

主题

30

回帖

75

积分

初级会员

努力做,耐心等

积分
75
发表于 2013-4-27 15:39:50 | 显示全部楼层 |阅读模式
现在想实现一个最简单功能:显示一个按钮,在触摸屏上按下,那么就显示一行文字。就是测试触摸屏参数控制UCGUI控件。请问要如何做,新手求助
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107819
QQ
发表于 2013-4-27 22:52:51 | 显示全部楼层
给你做了一个例子,点击按钮,做加一计数。
1.png
#include <stddef.h>
#include "GUI.h"
#include "DIALOG.h"
#include "BUTTON.h"
#include "TEXT.h"
#include "stdio.h"
/*********************************************************************
*
*       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,  "Caption",           0,                       0,  0,  320,240,FRAMEWIN_CF_MOVEABLE,0},
    { BUTTON_CreateIndirect,    "BUTTON0",           GUI_ID_BUTTON0,          89, 132,118,38, 0,0},
    { TEXT_CreateIndirect,      "i = ?",             GUI_ID_TEXT0,            102,44, 95, 33, 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_AddCloseButton(hWin, FRAMEWIN_BUTTON_RIGHT, 0);
    FRAMEWIN_AddMaxButton(hWin, FRAMEWIN_BUTTON_RIGHT, 1);
    FRAMEWIN_AddMinButton(hWin, FRAMEWIN_BUTTON_RIGHT, 2);
    FRAMEWIN_SetTitleHeight(hWin,20);
    //
    //GUI_ID_TEXT0
    //
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&GUI_Font32B_ASCII);

}




/*********************************************************************
*
*       Dialog callback routine
*/
static void _cbCallback(WM_MESSAGE * pMsg)
{
    int NCode, Id;
    static int i = 0;
    char buf[20];
    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:
                            i++;
                            sprintf(buf, "i = %d", i);
                            TEXT_SetText(WM_GetDialogItem(hWin,GUI_ID_TEXT0), buf);
                            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 */
    GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
    while(1)
    {
        GUI_Delay(10);
    }
}
回复

使用道具 举报

15

主题

30

回帖

75

积分

初级会员

努力做,耐心等

积分
75
 楼主| 发表于 2013-5-2 15:45:40 | 显示全部楼层

回 eric2013 的帖子

eric2013:给你做了一个例子,点击按钮,做加一计数。

#include <stddef.h>
#include "GUI.h"
#include "DIALOG.h"
....... (2013-04-27 22:52) 
大神,用的是ucguibuilder导入的吗
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107819
QQ
发表于 2013-5-2 15:56:46 | 显示全部楼层

回 chenweigang 的帖子

chenweigang:大神,用的是ucguibuilder导入的吗 (2013-05-02 15:45) 
是的
回复

使用道具 举报

0

主题

16

回帖

0

积分

新手上路

积分
0
发表于 2014-5-5 15:26:45 | 显示全部楼层

回 eric2013 的帖子

eric2013:给你做了一个例子,点击按钮,做加一计数。

#include <stddef.h>
#include "GUI.h"
#include "DIALOG.h"
....... (2013-04-27 22:52) 
void PaintDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;

}
这个函数的作用是什么呢?
回复

使用道具 举报

0

主题

16

回帖

0

积分

新手上路

积分
0
发表于 2014-5-5 15:28:13 | 显示全部楼层

回 eric2013 的帖子

eric2013:给你做了一个例子,点击按钮,做加一计数。

#include <stddef.h>
#include "GUI.h"
#include "DIALOG.h"
....... (2013-04-27 22:52) 
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;
            }

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;

还有这两部分有区别吗?谢谢哈!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-15 02:21 , Processed in 0.189744 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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