2024年3月2日发(作者:)
WM_HideWindow(hEdit); ShowText = 1; WM_InvalidateWindow(WM_HBKWIN); WM_CreateTimer(WM_HBKWIN, 0, 3000, 0); break; case WM_TIMER: ShowText = 0; WM_InvalidateWindow(WM_HBKWIN); WM_ShowWindow(hEdit); break; default: WM_DefaultProc(pMsg); }}
static void _cbEdit(WM_MESSAGE * pMsg) { (3) const WM_KEY_INFO * pInfo; WM_MESSAGE Msg;
switch (pMsg->MsgId) { case WM_KEY: (4) pInfo = (WM_KEY_INFO *)pMsg->Data.p; if (pInfo->Key == GUI_KEY_ENTER) { if (pInfo->PressedCnt == 0) { = WM_APP_SHOW_TEXT; c = pMsg->hWin; WM_SendMessage(WM_HBKWIN, &Msg); return; } } } EDIT_Callback(pMsg); (5)}
void MainTask(void) { EDIT_Handle hEdit;
GUI_Init();
WM_SetCallback(WM_HBKWIN, _cbBk); (6) hEdit = EDIT_CreateEx(50, 110, 220, 25, WM_HBKWIN, WM_CF_SHOW, 0, GUI_ID_EDIT0, TEXT_MAXLEN); (7) WM_SetCallback(hEdit, _cbEdit); (8) EDIT_SetText(hEdit, "Press "); EDIT_SetFont(hEdit, &GUI_Font8x16); EDIT_SetTextColor(hEdit, 0, GUI_RED); EDIT_EnableBlink(hEdit, 300, 1); (9) while (1) { GUI_Delay(10); }}这个实例中函数static void _cbBk(WM_MESSAGE * pMsg)存在问题,需要做如下修改:static void _cbBk(WM_MESSAGE * pMsg) { static WM_HWIN hEdit = 0;(10) static U8 ShowText = 0; char aBuffer[TEXT_MAXLEN];
//hEdit = 0; //ShowText = 0; switch (pMsg->MsgId) { case WM_PAINT: (11) GUI_SetBkColor(GUI_DARKGRAY); GUI_Clear(); GUI_SetFont(&GUI_Font24_ASCII); GUI_DispStringHCenterAt("WIDGET_Edit - Sample", 160, 5); GUI_SetFont(&GUI_Font8x16); if (ShowText) { GUI_DispStringHCenterAt("The string you have modified is:", 160, 90); EDIT_GetText(hEdit, aBuffer, TEXT_MAXLEN); GUI_DispStringHCenterAt(aBuffer, 160, 110); } else { GUI_DispStringHCenterAt("Use keyboard to ", 160, 90); } break; case WM_APP_SHOW_TEXT: (12) if (hEdit == 0) { hEdit = pMsg->hWinSrc; } WM_HideWindow(hEdit); ShowText = 1; WM_InvalidateWindow(WM_HBKWIN);
#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"
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = { { FRAMEWIN_CreateIndirect, "armfly", 0, 0, 0, 480,272,FRAMEWIN_CF_MOVEABLE,0}, { EDIT_CreateIndirect, "armfly", GUI_ID_EDIT0, 239,36, 100,21, 0,0}, { TEXT_CreateIndirect, "TextMode", GUI_ID_TEXT0, 81, 36, 106,24, 0,0}, { TEXT_CreateIndirect, "FloatMode", GUI_ID_TEXT4, 81, 199,118,24, 0,0}, { TEXT_CreateIndirect, "DecMode", GUI_ID_TEXT3, 81, 158,94, 24, 0,0}, { TEXT_CreateIndirect, "BinMode", GUI_ID_TEXT2, 81, 117,94, 24, 0,0}, { TEXT_CreateIndirect, "HexMode", GUI_ID_TEXT1, 81, 73, 94, 24, 0,0}, { EDIT_CreateIndirect, "FFFF", GUI_ID_EDIT1, 239,73, 100,21, 0,0}, { EDIT_CreateIndirect, "11110000", GUI_ID_EDIT2, 239,120,100,21, 0,0}, { EDIT_CreateIndirect, "128", GUI_ID_EDIT3, 239,163,100,21, 0,0}, { EDIT_CreateIndirect, "12.123456", GUI_ID_EDIT4, 239,199,100,21, 0,0}};
void PaintDialog(WM_MESSAGE * pMsg){ WM_HWIN hWin = pMsg->hWin;
}
void InitDialog(WM_MESSAGE * pMsg){ WM_HWIN hWin = pMsg->hWin; // //FRAMEWIN // FRAMEWIN_SetFont(hWin,&GUI_Font32B_ASCII); FRAMEWIN_AddCloseButton(hWin, FRAMEWIN_BUTTON_RIGHT, 0); FRAMEWIN_AddMaxButton(hWin, FRAMEWIN_BUTTON_RIGHT, 1); FRAMEWIN_AddMinButton(hWin, FRAMEWIN_BUTTON_RIGHT, 2); FRAMEWIN_SetTitleHeight(hWin,35); // //GUI_ID_EDIT0 // EDIT_SetFont(WM_GetDialogItem(hWin,GUI_ID_EDIT0),&GUI_Font16B_ASCII); EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT0),"armfly"); // //GUI_ID_TEXT0 // TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&GUI_Font24B_ASCII); // //GUI_ID_TEXT4 // TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT4),&GUI_Font24B_ASCII); // //GUI_ID_TEXT3 // TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT3),&GUI_Font24B_ASCII); // //GUI_ID_TEXT2 // TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT2),&GUI_Font24B_ASCII); // //GUI_ID_TEXT1 // TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT1),&GUI_Font24B_ASCII); // //GUI_ID_EDIT1 // EDIT_SetFont(WM_GetDialogItem(hWin,GUI_ID_EDIT1),&GUI_Font16B_ASCII); EDIT_SetHexMode(WM_GetDialogItem(hWin,GUI_ID_EDIT1),65535,0,255);(1)
// //GUI_ID_EDIT2 // EDIT_SetFont(WM_GetDialogItem(hWin,GUI_ID_EDIT2),&GUI_Font16B_ASCII); EDIT_SetBinMode(WM_GetDialogItem(hWin,GUI_ID_EDIT2),240,0,255);(2) // //GUI_ID_EDIT3 // EDIT_SetFont(WM_GetDialogItem(hWin,GUI_ID_EDIT3),&GUI_Font16B_ASCII); EDIT_SetDecMode(WM_GetDialogItem(hWin,GUI_ID_EDIT3),128,0,255,0,0); (3) // //GUI_ID_EDIT4 // EDIT_SetFont(WM_GetDialogItem(hWin,GUI_ID_EDIT4),&GUI_Font16B_ASCII); EDIT_SetFloatMode(WM_GetDialogItem(hWin,GUI_ID_EDIT4),12.12346,0,255,6,0); (4)
}
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; }


发布评论