|
当按键输入时能够进入 ExecSetup(),可是屏幕没有刷新,使用模拟器能够刷新出新界面,请问问题在哪?谢谢
static void _cbDialog1(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
WM_HWIN hWinSrc;
char buf[50];
WM_HWIN hWin = pMsg->hWin;
int Id, NCode;
// USER START (Optionally insert additional variables)
GUI_UC_SetEncodeUTF8();
TEXT_SetFont(WM_GetDialogItem(hWin,ID_TEXT_0),&GUI_Fontsongfont36);
// USER END
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
//
// Initialization of 'Text'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
TEXT_SetText(hItem, "电压:");
TEXT_SetFont(hItem, GUI_FONT_16_HK);
TEXT_SetTextColor(hItem, 0x0000FF00);
//
// USER START (Optionally insert additional message handling)
case WM_KEY:
switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) {
case GUI_KEY_ESCAPE:
GUI_EndDialog(hWin, 1);
break;
case GUI_KEY_UP:
ExecSetup();//GUI_EndDialog(hWin, 0);
break;
}
break;
}
break;
// USER END
default:
WM_DefaultProc(pMsg);
break;
}
}
// USER START (Optionally insert additional public code)
void MainTask(void)
{
WM_SetCreateFlags(WM_CF_MEMDEV);
GUI_Init();
hWin_main = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbDialog1, WM_HBKWIN, 0, 0);
while(1)
{//GUI_ExecDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbDialog1, 0, 0, 0);
GUI_Delay(1000);
}
}
以下是ExecSetup的代码:
/*********************************************************************
* SEGGER MICROCONTROLLER SYSTEME GmbH *
* Solutions for real time microcontroller applications *
**********************************************************************
* *
* (c) 1996 - 2003 SEGGER Microcontroller Systeme GmbH *
* *
* Internet: www.segger.com Support: support@segger.com *
* *
**********************************************************************
**** emWin/GSC Grafical user interface for embedded applications ****
emWin is protected by international copyright laws. Knowledge of the
source code may not be used to write a similar product. This file may
only be used in accordance with a license and should not be re-
distributed in any way. We appreciate your understanding and fairness.
----------------------------------------------------------------------
File : Setup.c
Purpose : TBD
---------------------------END-OF-HEADER------------------------------
*/
#include <stddef.h>
#include "GUI.h"
#include "DIALOG.h"
//#include "Main.h"
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
/*********************************************************************
*
* Dialog IDs
*/
#define ID_FRAMEWIN 1
#define ID_WINDOW_0 (GUI_ID_USER + 0x00)
/*********************************************************************
*
* Static data
*
**********************************************************************
*/
static char _IsInited;
static WM_HWIN _hDlg;
static WM_HWIN _hPrevWin;
static const GUI_WIDGET_CREATE_INFO _aDialogCreate_setup[] = {
{ FRAMEWIN_CreateIndirect, "Setup", ID_WINDOW_0, 0, 320, 480, 320, 0},
{ CHECKBOX_CreateIndirect, NULL, GUI_ID_CHECK0, 50, 40, 150, 0 },
{ CHECKBOX_CreateIndirect, NULL, GUI_ID_CHECK1, 50, 70, 150, 0 },
{ CHECKBOX_CreateIndirect, NULL, GUI_ID_CHECK2, 50, 100, 150, 0 },
{ TEXT_CreateIndirect, "User ID:",0, 50, 130, 40, 20, TEXT_CF_LEFT | TEXT_CF_VCENTER },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT0, 95, 130, 100, 20 },
{ BUTTON_CreateIndirect, "OK", GUI_ID_OK, 230, 140, 60, 20 },
{ BUTTON_CreateIndirect, "CANCEL", GUI_ID_CANCEL, 230, 180, 60, 20 },
};
/*********************************************************************
*
* Static code
*
**********************************************************************
*/
/*********************************************************************
*
* _cbCallback
*/
static void _cbCallback(WM_MESSAGE * pMsg) {
WM_HWIN hDlg, hWinSrc, hItem;
int Id, NCode;
hWinSrc = pMsg->hWinSrc;
hDlg = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
FRAMEWIN_SetFont(hDlg, &GUI_Font24B_ASCII);
FRAMEWIN_SetTextAlign(hDlg, GUI_TA_HCENTER);
FRAMEWIN_SetClientColor(hDlg, GUI_RED);
hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK0); CHECKBOX_SetText(hItem, "Enable alarm");
hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK1); CHECKBOX_SetText(hItem, "Enable display lighting");
hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK2); CHECKBOX_SetText(hItem, "Enable color mode");
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(hWinSrc); /* Id of widget */
NCode = pMsg->Data.v; /* Notification code */
if (NCode == WM_NOTIFICATION_RELEASED) { /* React only if released */
if (Id == GUI_ID_OK) { /* OK Button */
GUI_SetOrg(0, 0);
WM_SetFocus(_hPrevWin);
}
else if (Id == GUI_ID_CANCEL) { /* cancel Button */
GUI_SetOrg(0, 0);
WM_SetFocus(_hPrevWin);
}
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* _Init
*/
static void _Init(void) {
if (_IsInited) {
return;
}
_IsInited = 1;
CHECKBOX_SetDefaultTextColor(GUI_WHITE);
CHECKBOX_SetDefaultBkColor(GUI_INVALID_COLOR);
CHECKBOX_SetDefaultFocusColor(GUI_WHITE);
TEXT_SetDefaultTextColor(GUI_WHITE);
_hDlg = GUI_CreateDialogBox(_aDialogCreate_setup, GUI_COUNTOF(_aDialogCreate_setup), &_cbCallback, 0, 0, 0);
}
/*********************************************************************
*
* Public code
*
**********************************************************************
*/
/*********************************************************************
*
* ExecSetup
*/
void ExecSetup(void) {
_hPrevWin = WM_GetFocussedWindow();
_Init();
GUI_SetOrg(0, 320);
WM_SetFocus(_hDlg);
} |
|