|

楼主 |
发表于 2019-11-27 10:14:23
|
显示全部楼层
这是我大概的程序(第一个窗口的创建部分),窗口1既没有背景,从别的窗口切换回来还会闪烁。
static void _cbDialog1(WM_MESSAGE * pMsg);
static void _cbDialog1(WM_MESSAGE * pMsg)
{
WM_HWIN hItem;
int NCode;
int Id;
hItem = pMsg->hWin;
GUI_MEMDEV_Handle hMem0;
hMem0 = GUI_MEMDEV_CreateEx(0, 0, 480, 272, GUI_MEMDEV_HASTRANS);
switch (pMsg->MsgId)
{
case WM_INIT_DIALOG:
WM_SetCreateFlags(WM_CF_MEMDEV);
GUI_MEMDEV_Select(hMem0);
GUI_DrawBitmap(pBmp[1], 0, 0);
// 初始化按钮控件
hItem=WM_GetDialogItem(pMsg->hWin,ID_BUTTON_2);
WM_SetHasTrans(hItem);
WM_SetCallback(hItem,_cbButton2);
hItem=WM_GetDialogItem(pMsg->hWin,ID_BUTTON_3);
WM_SetHasTrans(hItem);
WM_SetCallback(hItem,_cbButton3);
//初始化文本控件
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
//TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
TEXT_SetTextColor(hItem, GUI_BLACK);
TEXT_SetFont(hItem, &GUI_Fontsunny);
GUI_UC_SetEncodeUTF8();
TEXT_SetText(hItem, pStr0);
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id)
{
case ID_BUTTON_2:
switch(NCode)
{
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
GUI_EndDialog(hItem, 0);
GUI_CreateDialogBox(_aDialogCreate3, GUI_COUNTOF(_aDialogCreate3), _cbDialog3, WM_HBKWIN, 0, 0);
break;
}
break;
case ID_BUTTON_3:
switch(NCode)
{
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
GUI_EndDialog(pMsg->hWin, 0);
GUI_CreateDialogBox(_aDialogCreate4, GUI_COUNTOF(_aDialogCreate4), _cbDialog4, WM_HBKWIN, 0, 0);
break;
}
break;
}
break;
case WM_PAINT:
GUI_SetBkColor(GUI_WHITE);
GUI_Clear();
GUI_MEMDEV_Select(0);
GUI_MEMDEV_WriteAt(hMem0,0,0);
GUI_MEMDEV_Delete(hMem0);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
BUTTON_SetBitmapEx(hItem,BUTTON_BI_UNPRESSED,sBmp[0],0,0);
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_3);
BUTTON_SetBitmapEx(hItem,BUTTON_BI_UNPRESSED,sBmp[1],0,0);
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
//创建窗口
WM_HWIN CreateWindow(void);
WM_HWIN CreateWindow(void) {
WM_HWIN hWin;
hWin = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), _cbDialog1, WM_HBKWIN, 0, 0);
return hWin;
}
/*
*********************************************************************************************************
* MainTask
*********************************************************************************************************
*/
void MainTask(void)
{
GUI_Init();
WM_SetCreateFlags(WM_CF_MEMDEV);
WM_MOTION_Enable(1);
CreateWindow();
while(1)
{
GUI_Delay(10);
}
} |
|