OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13064|回复: 16

请教 如何在UC/GUI 的窗口回调函数里面 创建一个列表框

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2012-10-17
在线时间
0 小时
发表于 2012-10-17 10:06:02 | 显示全部楼层 |阅读模式
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-10-17 10:18:49 | 显示全部楼层
回复 支持 反对

使用道具 举报

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
发表于 2012-10-17 10:49:27 | 显示全部楼层
如果是直接在桌面窗口,框架窗口,其它窗口创建。
建立的时候在
WM_INIT_DIALOG 这个里面创建就可以的。
回复 支持 反对

使用道具 举报

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
发表于 2012-10-17 10:51:53 | 显示全部楼层
如果使用对话框的方式创建,就用论坛里面的GUIBuilder,简单方便。

除了绘图控件,菜单控件,Header控件 都能创建。
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2012-10-17
在线时间
0 小时
 楼主| 发表于 2012-10-17 11:17:08 | 显示全部楼层
回复【3楼】Eric2013:
---------------------------------
如大侠所说 小弟在WM_INIT_DIALOG  里面创建如下:
  hListBox= LISTBOX_Create(Listbox,120,50,50,80,WM_CF_SHOW);
但是 我在DEBUG的时候 程序跑起来 进入画面后我点击这个子窗口 打不开 死机 重复好几次都是这样 是怎么回事
回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2012-10-17 11:34:11 | 显示全部楼层
我还想弄按键弹窗的说。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
发表于 2012-10-17 12:55:34 | 显示全部楼层
把你的程序贴出来,我看看

1.最好用那个GUIBuilder,简单好用。为啥不用。
2. 也可以这么来
   hFrame = FRAMEWIN_Create("List box", NULL, WM_CF_SHOW, 100, 80, 120, 140);

   /* 其实坐标0,0,水平和垂直的大小如果设置为0的话,那么将默认为父窗口的用户区大小 */
  hListBox = LISTBOX_CreateAsChild(_ListBox, WM_GetClientWindow(hFrame), 0, 0, 0, 0,    WM_CF_SHOW);

3. 按键弹出窗口
    case GUI_ID_BUTTON0:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            这里建立新的窗口
                            break;
                    }
                    break;
  

回复 支持 反对

使用道具 举报

46

主题

1579

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1970
金钱
1970
注册时间
2011-7-17
在线时间
4 小时
发表于 2012-10-17 14:10:23 | 显示全部楼层
回复【7楼】Eric2013:
---------------------------------
哥,我就是用这个builder玩的,手头上暂时没有硬件,在外面电脑的说,那个软件里面有一个event的文件,设置了按下,在那个文件里面会生成一个按下中断的说,在里面写东西,实际上运行点击不弹出。
Time?And?Relative?Dimension?In?Space.
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2012-10-17
在线时间
0 小时
 楼主| 发表于 2012-10-17 14:17:50 | 显示全部楼层
回复【7楼】Eric2013:
---------------------------------

const GUI_ConstString ListBox[] =
{
  "IN1","IN2","IN3"
};


static void _cbDialog_F(WM_MESSAGE * pMsg) {
int NCode,Id;

WM_HWIN hDlg ,hItem;

hDlg = pMsg->hWin;
switch (pMsg->MsgId) 
{
case WM_INIT_DIALOG:

              _hListBox= LISTBOX_Create(ListBox,170,20,50,80,WM_CF_SHOW);

  
SCROLLBAR_SetDefaultWidth(20);
SCROLLBAR_CreateAttached(_hListBox, SCROLLBAR_CF_VERTICAL);/*将滑动条吸附在列表框上*/


break;
case WM_PAINT:
GUI_SetBkColor(GUI_MAGENTA);
GUI_Clear();
GUI_SetColor(GUI_BLACK);
GUI_DrawHLine(40, 5, 150);
GUI_DrawLine(5, 10, 5, 70);

GUI_DrawHLine(110, 5, 150);
GUI_DrawLine(5, 80, 5, 140);
              break;
  
case WM_NOTIFY_PARENT:
Id    = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;               /* Notification code */
switch (NCode) {
case WM_NOTIFICATION_RELEASED:      /* React only if released */
switch (Id)
{
case GUI_ID_LISTVIEW0:
break;
case GUI_ID_CLOSE:
break;

}
break;
case WM_NOTIFICATION_CLICKED:
break;
default:
break;
}
break;
default:
WM_DefaultProc(pMsg);
}
}
请大哥指点  另外你说的GUIBuilder 小弟比较茫然没有用过 加入用 GUIBuilder 怎么来做呢 
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2012-10-17
在线时间
0 小时
 楼主| 发表于 2012-10-18 09:37:44 | 显示全部楼层
跪求指点迷津啊 
回复 支持 反对

使用道具 举报

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
发表于 2012-10-18 11:01:06 | 显示全部楼层
我用三种方法给你实现一下

方法一: 通过GUIBuilder 在对话框里面创建。

/*
******************************************************************
**                      uCGUIBuilder                            **
**                  Version:   4.0.0.0                          **
**                     2012 / 04                               **
**                   CpoyRight to: wyl                          **
**              Email:ucguibuilder@163.com                        **
**          This text was Created by uCGUIBuilder               **
******************************************************************/

#include "GUI.h"
#include "FRAMEWIN.h"
#include "LISTBOX.h"
#include <stddef.h>


/*********************************************************************
*
*       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,  "ListBOX",           0,                       0,  0,  320,240,FRAMEWIN_CF_MOVEABLE,0},
    { LISTBOX_CreateIndirect,    NULL,               GUI_ID_LISTBOX0,         78, 51, 133,83, 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_LISTBOX0
    //
    LISTBOX_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),0,0xffffff);
    LISTBOX_SetAutoScrollH(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),1);
    LISTBOX_SetAutoScrollV(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),1);
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"111111111111111111");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"222222222222222");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"3333333333");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"4444444444444444");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"5555555555555");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"QQQQQ");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"RRRRRRRRR");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"TTTTTTTTTT");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"YYYYYYYYYYYYY");

}

/*********************************************************************
*
*       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;

            }
            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_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
}

方法二 在框架窗口上创建


#include "GUI.h"
#include "FRAMEWIN.h"
#include "LISTBOX.h"
#include <stddef.h>

static const GUI_ConstString _ListBox[] = {
    "English", "Deutsch", NULL
};

/*******************************************************************
*
*       _DemoListBoxAsChild
*/
void MainTask(void){
  FRAMEWIN_Handle hFrame;
  LISTBOX_Handle hListBox;

   GUI_Init();
   WM_SetDesktopColor(GUI_BLUE);
  /* Create framewin */
  /* 创建窗口框架 */
  hFrame = FRAMEWIN_Create("List box", NULL, WM_CF_SHOW, 0, 0, 320, 240);
  FRAMEWIN_SetFont(hFrame, &GUI_Font16B_ASCII);
  FRAMEWIN_SetActive(hFrame, 1);

  /* Create listbox */
  /* 创建列表框 */
  /* Creates a LISTBOX widget as a child window */
  /* 其实坐标0,0,水平和垂直的大小如果设置为0的话,那么将默认为父窗口的用户区大小 */
  hListBox = LISTBOX_CreateAsChild(_ListBox, WM_GetClientWindow(hFrame), 0, 0, 130, 100, WM_CF_SHOW);

  /* Add strings */
  /* 增加字符串 */
  LISTBOX_AddString(hListBox, "11111111111111");
  LISTBOX_AddString(hListBox, "2222222222222");
  LISTBOX_AddString(hListBox, "3333333333");
  LISTBOX_AddString(hListBox, "4444444444");
  LISTBOX_AddString(hListBox, "Other language ...");
  LISTBOX_AddString(hListBox, "11111111111111");
  LISTBOX_AddString(hListBox, "2222222222222");
  LISTBOX_AddString(hListBox, "3333333333");
  LISTBOX_AddString(hListBox, "4444444444");
  LISTBOX_SetAutoScrollV(hListBox,1);

  while (1)
  {
      GUI_Delay(100);
  }

}

方法三 在框架窗口的回调函数里面创建


#include "GUI.h"
#include "FRAMEWIN.h"
#include "LISTBOX.h"
#include <stddef.h>

FRAMEWIN_Handle hFrame;
LISTBOX_Handle hListBox;

static const GUI_ConstString _ListBox[] = {
    "English", "Deutsch", NULL
};

/*********************************************************************
*
*       _cbBkWindow
*/
static void _cbCallbackFramewin(WM_MESSAGE * pMsg) {
   
    WM_HWIN hWin = pMsg->hWin;
   
    switch (pMsg->MsgId) {
    case WM_CREATE:

          hListBox = LISTBOX_CreateAsChild(_ListBox, WM_GetClientWindow(hWin), 90, 80, 130, 100, WM_CF_SHOW);
          /* Add strings */
          /* 增加字符串 */
          LISTBOX_AddString(hListBox, "11111111111111");
          LISTBOX_AddString(hListBox, "2222222222222");
          LISTBOX_AddString(hListBox, "3333333333");
          LISTBOX_AddString(hListBox, "4444444444");
          LISTBOX_AddString(hListBox, "Other language ...");
          LISTBOX_AddString(hListBox, "11111111111111");
          LISTBOX_AddString(hListBox, "2222222222222");
          LISTBOX_AddString(hListBox, "3333333333");
          LISTBOX_AddString(hListBox, "4444444444");
          LISTBOX_SetAutoScrollV(hListBox,1);
       
    case WM_PAINT:
        GUI_SetBkColor(GUI_BLUE);
        GUI_Clear();
        GUI_SetColor(GUI_WHITE);
        GUI_SetFont(&GUI_Font24_ASCII);
        GUI_DispStringHCenterAt("ListBox - Sample", 160, 5);
    default:
        WM_DefaultProc(pMsg);
    }
}

/*********************************************************************
*
*       _cbBkWindow
*/
static void _cbBkWindow(WM_MESSAGE * pMsg) {

    WM_HWIN hWin = pMsg->hWin;

    switch (pMsg->MsgId) {

    case WM_PAINT:
        GUI_SetBkColor(GUI_BLUE);
        GUI_Clear();
        GUI_SetColor(GUI_WHITE);
        GUI_SetFont(&GUI_Font24_ASCII);
        GUI_DispStringHCenterAt("ListBox - Sample", 160, 5);
    default:
        WM_DefaultProc(pMsg);
    }
}

/*******************************************************************
*
*       _DemoListBoxAsChild
*/
void MainTask(void){ 
   /* 初始化 */
   GUI_Init();
   /* 这里是设置回调 */
   WM_SetCallback(WM_HBKWIN, _cbBkWindow);
   WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */
   WM_EnableMemdev(WM_HBKWIN);       /* Enable use of memory devices for desktop windows */
   FRAMEWIN_CreateEx(0, 0, 319, 239, 0, WM_CF_SHOW, 0, 0, "ListBox", &_cbCallbackFramewin)

  while (1)
  {
      GUI_Delay(100);
  }

}

方法三.txt

3.25 KB, 下载次数: 172

方法二.txt

2.4 KB, 下载次数: 159

回复 支持 反对

使用道具 举报

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
发表于 2012-10-18 11:09:10 | 显示全部楼层
方法一

方法一.txt

5.97 KB, 下载次数: 183

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-10-18 13:31:15 | 显示全部楼层
顶楼上。
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2012-10-17
在线时间
0 小时
 楼主| 发表于 2012-10-18 14:01:25 | 显示全部楼层
回复【11楼】Eric2013:
---------------------------------
我的妈妈呀 大神啊  太激动了   小弟跪谢!!
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2012-10-17
在线时间
0 小时
 楼主| 发表于 2012-10-19 09:28:53 | 显示全部楼层
回复【12楼】Eric2013:
---------------------------------
大哥 这个列表框的问题搞定了   还有一件事情想请教   我现在总共创建了A,B,C,D,E,F 六个窗口,窗口里的控件就是一些editer slider listview 之类的。现在明显感觉窗口之间切换刷新速度很慢,按几下之后就死机卡死了,程序停止在硬件错误上,不知道是何原因。假如只有3个或者4个窗口的话,来回切换时不会死机的,顶多就是速度有些慢。
回复 支持 反对

使用道具 举报

5

主题

166

帖子

2

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2012-10-8
在线时间
0 小时
发表于 2012-10-19 19:07:18 | 显示全部楼层
回复【15楼】an5257:
---------------------------------
上我的博客,博客里面有我的群号,到群里问吧,这样聊方便。
回复 支持 反对

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2014-1-11
在线时间
0 小时
发表于 2015-2-3 17:37:58 | 显示全部楼层

大神请问下,窗体由ucgui builder创建好了,但是,请问如何使内容能随着箭头所指的滑动条而变化???

代码如下:
/*
******************************************************************
**                      uCGUIBuilder                            **
**                  Version:   4.0.0.0                          **
**                     2012 / 04                               **
**                   CpoyRight to: wyl                          **
**              Email:ucguibuilder@163.com                        **
**          This text was Created by uCGUIBuilder               **
******************************************************************/

#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 "PROGBAR.h"
#include "SCROLLBAR.h"
#include "LISTVIEW.h"





//EventsFunctionList
void OnScrollBarHClicked(WM_MESSAGE * pMsg);
void OnScrollBarVClicked(WM_MESSAGE * pMsg);
void OnListBoxClicked(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,  "Caption",           0,                       0,  0,  320,240,FRAMEWIN_CF_MOVEABLE,0},
    { LISTBOX_CreateIndirect,    NULL,               GUI_ID_LISTBOX0,         61, 41, 123,142,0,0},
    { SCROLLBAR_CreateIndirect,  NULL,               GUI_ID_SCROLLBAR1,       166,41, 18, 122,8,0},
    { SCROLLBAR_CreateIndirect,  NULL,               GUI_ID_SCROLLBAR0,       61, 163,105,20, 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);
    //
    //GUI_ID_LISTBOX0
    //
    LISTBOX_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),0,0xffffff);
    LISTBOX_SetAutoScrollH(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),1);
    LISTBOX_SetAutoScrollV(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),1);
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"ENGLISH");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"KUANGSIJIAN");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"KUANGZHAN");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"KUANGYIFANG");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"KUANGXIAOYING");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"KAUNGTIEJIAO");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"KUANGCHUANHAO");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"KUANGCHUANYI");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"WENNAIXIN");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"TANGMANZHEN");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"KUANGRENYU");
    LISTBOX_AddString(WM_GetDialogItem(hWin,GUI_ID_LISTBOX0),"KAUNGYIZI");

}




/*********************************************************************
*
*       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_LISTBOX0:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                        //    OnListBoxClicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_SCROLLBAR1:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                         //   OnScrollBarVClicked(pMsg);
                            break;
                    }
                    break;
                case GUI_ID_SCROLLBAR0:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                           // OnScrollBarHClicked(pMsg);
                            break;
                    }
                    break;

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


/*********************************************************************
*
*       MainTask
*
**********************************************************************
*/
void Task(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);
    GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
}

回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-26 01:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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