高级会员

- 积分
- 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);
}
}
|
|