|

楼主 |
发表于 2016-11-3 13:18:14
|
显示全部楼层
谢谢硬汉的回答,我现在问题是从一个界面切换到另一个界面时,另一个界面不是一下子显示出来, 会出现上面的最后一张图片一样,(当然是设置了断点),
变成界面切换不怪, 特别是当另一个界面有底图时(需要从flash加载),会出现界面上的控件都显示出来, 过1秒会才把底图刷新出来
主要代码
创建一个界面
static void _cbWin(WM_MESSAGE * pMsg)
{
static int yPosToucan;
static int yAdd;
GUI_RECT Rect = { 0, 0, 0, 0 };
WM_HWIN hItem;
WM_HWIN hDlg;
WM_HWIN hText;
int NCode;
int Id;
int Sel;
int xSize, ySize;
GUI_BITMAP Bitmap;
GUI_LOGPALETTE Palette;
yPosToucan = 20;
yAdd = 1;
hDlg = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_NOTIFY_PARENT:
break;
case USER_KEY_ENTER:
// WM_InvalidateWindow(hDlg);
WM_HideWindow(MenuPar.hWinCur);
GuiTime();
break;
case WM_KEY:
{
switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
{
case GUI_KEY_UP:
printf("GUI_KEY_ENTER _cbDialog0 \\r\\n");
break;
case GUI_KEY_DOWN:
printf("GUI_KEY_ENTER _cbDialog0 \\r\\n");
break;
case GUI_KEY_ENTER:
printf("GUI_KEY_ENTER _cbDialog0 \\r\\n");
WM_InvalidateWindow(hDlg);
break;
default:
break;
}
printf("WM_KEY _cbDialog0 \\r\\n");
}
break;
case WM_CREATE:
break;
// GUI_MOVIE_Create(const void * pFileData,U32 FileSize,GUI_MOVIE_FUNC * pfNotify)
case WM_PAINT:
xSize = WM_GetWindowSizeX(hWin);
ySize = WM_GetWindowSizeY(hWin);
//
// Draw background
//
#if 1
ShowPngPos("127.dta",0,0);
GUI_CreateBitmapFromStream(&Bitmap, & alette, PngFile._acBuffer2);
GUI_DrawBitmap(&Bitmap, 0, 0);
GUI_ALLOC_Free(PngFile.hMem);
#else
GUI_SetColor(0x007a9730);
GUI_FillRect(0, 0, xSize - 1, ySize - 3);
#endif
/*
* Draw background and toucan
*/
// GUI_DrawBitmap(&_bmHund, 0, 0);
//GUI_DrawBitmap(&_bmToucan, 146, yPosToucan);
//xSize = WM_GetWindowSizeX(pMsg->hWin);
//ySize = WM_GetWindowSizeY(pMsg->hWin);
//GUI_DrawGradientH(0, 0, xSize - 1, ySize - 1, 0xfffff56c, 0xffffffe8);
//GUI_DrawGradientH(0, 0, 240, 280, 0xffff0d23, 0xfffff56c);
// GUI_SetColor(GUI_YELLOW);
//U8 Alpha=20;
///GUI_SetAlpha(0x80);
//GUI_DrawHLine(120, 0,232);
break;
}
}
WM_HWIN MainAA_Task(void);
WM_HWIN MainAA_Task(void)
{
unsigned char i, data=1;
WM_HMEM imageHand;
WM_SetCreateFlags(WM_CF_MEMDEV);
GUI_Init();
if (GUI_ALLOC_GetNumFreeBytes() < RECOMMENDED_MEMORY)
{
GUI_ErrorOut("Not enough memory available.");
return 0;
}
ShowPngPos("setting.dta",0,0);
WM_EnableMemdev(WM_HBKWIN);
WM_SetCallback(WM_HBKWIN, 0);
CreatStatusWin();
MenuPar.hWinMain= WM_CreateWindowAsChild(
0, //????λ?á???С
30,
480,
272-30,
WM_HBKWIN, WM_CF_SHOW|WM_CF_MEMDEV,
_cbWin,
0);
WM_EnableMemdev(MenuPar.hWinMain);
MenuPar.hWinCur=MenuPar.hWinMain;
imageHand=IMAGE_CreateUser(480-55,242-55,48,48, MenuPar.hWinMain, WM_CF_SHOW|WM_CF_MEMDEV, 0, GUI_ID_IMAGE0,1);
MenuPar.hWinTime=imageHand;
IMAGE_SetUserData(imageHand,&data,1);
WM_SetCallback(imageHand, _cbImage);
CreatHtuWin();
CreatVocWin();
CreateCh2oWin();
CreatePm25Win();
CreateAqiWin();
return hWin;
}
创建另一个界面
#include <stddef.h>
#include <string.h>
#include "WM.h"
#include "gui_common.h"
void createTimeAdj(void);
void createTimeSave(void);
void createTimeFunItem(void);
static void _cbTimeSetWin(WM_MESSAGE * pMsg)
{
static int yPosToucan;
static int yAdd;
GUI_RECT Rect = { 0, 0, 0, 0 };
WM_HWIN hItem;
WM_HWIN hDlg;
WM_HWIN hText;
int NCode;
int Id;
int Sel;
int xSize, ySize;
yPosToucan = 20;
yAdd = 1;
hDlg = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_NOTIFY_PARENT:
break;
case USER_KEY_ENTER:
WM_DeleteWindow(MenuPar.hWinTimeSet);
MenuPar.hWinCur=MenuPar.hWinMain;
WM_ShowWindow(MenuPar.hWinCur);
break;
case USER_KEY_DOWN:
break;
case USER_KEY_UP:
break;
case WM_KEY:
{
}
break;
case WM_CREATE:
break;
case WM_PAINT:
xSize = WM_GetWindowSizeX(pMsg->hWin);
ySize = WM_GetWindowSizeY(pMsg->hWin);
GUI_SetColor(0x00755530);
GUI_FillRect(0, 0, xSize , ySize );
break;
}
}
static void _cbTimeAdjWin(WM_MESSAGE * pMsg)
{
static int yPosToucan;
static int yAdd;
GUI_RECT Rect = { 0, 0, 0, 0 };
WM_HWIN hItem;
WM_HWIN hDlg;
WM_HWIN hText;
int NCode;
int Id;
int Sel;
int xSize, ySize;
yPosToucan = 20;
yAdd = 1;
hDlg = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_NOTIFY_PARENT:
break;
case USER_KEY_ENTER:
break;
case USER_KEY_DOWN:
break;
case USER_KEY_UP:
break;
case WM_KEY:
{
}
break;
case WM_PAINT:
xSize = WM_GetWindowSizeX(pMsg->hWin);
ySize = WM_GetWindowSizeY(pMsg->hWin);
GUI_SetColor(0x00757730);
GUI_FillRect(0, 0, xSize , ySize );
break;
}
}
static void _cbTimeSaveWin(WM_MESSAGE * pMsg)
{
static int yPosToucan;
static int yAdd;
GUI_RECT Rect = { 0, 0, 0, 0 };
WM_HWIN hItem;
WM_HWIN hDlg;
WM_HWIN hText;
int NCode;
int Id;
int Sel;
int xSize, ySize;
yPosToucan = 20;
yAdd = 1;
hDlg = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_NOTIFY_PARENT:
break;
case USER_KEY_ENTER:
break;
case USER_KEY_DOWN:
break;
case USER_KEY_UP:
break;
case WM_KEY:
{
}
break;
case WM_PAINT:
xSize = WM_GetWindowSizeX(pMsg->hWin);
ySize = WM_GetWindowSizeY(pMsg->hWin);
GUI_SetColor(0x00757730);
GUI_FillRect(0, 0, xSize , ySize );
break;
}
}
static void _cbImage(WM_MESSAGE * pMsg) {
GUI_RECT Rect;
int Index;
int TextAlign;
GUI_BITMAP Bitmap;
GUI_LOGPALETTE Palette;
unsigned char data;
switch (pMsg->MsgId) {
case WM_PAINT:
ShowPngPos("clock.dta",0,0);
GUI_CreateBitmapFromStream(&Bitmap, & alette, PngFile._acBuffer2);
GUI_DrawBitmap(&Bitmap, 0, 0);
GUI_ALLOC_Free(PngFile.hMem);
break;
default:
IMAGE_Callback(pMsg);
break;
}
}
void createTimeAdj(void)
{
WM_CreateWindowAsChild(50,
10,
300,
150,
MenuPar.hWinTimeSet,
WM_CF_SHOW | WM_CF_MEMDEV,
_cbTimeAdjWin, 0);;
}
void createTimeSave(void)
{
WM_CreateWindowAsChild(50,
170,
300,
50,
MenuPar.hWinTimeSet,
WM_CF_SHOW | WM_CF_MEMDEV,
_cbTimeSaveWin, 0);;
}
void createTimeFunItem(void)
{
WM_CreateWindowAsChild(360,
40,
100,
130,
MenuPar.hWinTimeSet,
WM_CF_SHOW | WM_CF_MEMDEV,
_cbTimeSaveWin, 0);;
}
void GuiTime(void)
{
WM_HMEM imageHand;
GUI_MEMDEV_Handle hMem;
unsigned char data;
MenuPar.hWinTimeSet= WM_CreateWindowAsChild(0,
30,
480,
272-30,
WM_HBKWIN,
WM_CF_SHOW| WM_CF_MEMDEV,
_cbTimeSetWin, 0);
WM_EnableMemdev(MenuPar.hWinTimeSet);
createTimeAdj();
createTimeSave();
createTimeFunItem();
imageHand=IMAGE_CreateUser(480-55,242-55,48,48, MenuPar.hWinTimeSet, WM_CF_SHOW|WM_CF_MEMDEV, 0, GUI_ID_IMAGE0,1);
MenuPar.hWinTime=imageHand;
IMAGE_SetUserData(imageHand,&data,1);
WM_SetCallback(imageHand, _cbImage);
MenuPar.hWinCur=MenuPar.hWinTimeSet;
GUI_MEMDEV_CopyToLCD(hMem);
GUI_MEMDEV_Select(0);
} |
|