|

楼主 |
发表于 2018-7-11 11:01:44
|
显示全部楼层
谢谢,按你说的方法,现在可以了,以下是最终的代码:
- #define ID_FRAMEWIN_0 (GUI_ID_USER + 0x00)
- #define ID_EDIT_0 (GUI_ID_USER + 0x01)
- #define ID_FRAMEWIN_1 (GUI_ID_USER + 0x02)
- WM_HWIN hDialog;
- static void _cbDialog(WM_MESSAGE *pMsg);
- static void _cbDialogMessage(WM_MESSAGE *pMsg);
- static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
- {FRAMEWIN_CreateIndirect, "Framewin", ID_FRAMEWIN_0, 0, 0, 320, 240, FRAMEWIN_CF_MOVEABLE, 0},
- {EDIT_CreateIndirect, "Edit", ID_EDIT_0, 88, 27, 159, 29, 0, 0},
- {BUTTON_CreateIndirect, "Button", GUI_ID_BUTTON0, 87, 73, 159, 30, 0, 0},
- {BUTTON_CreateIndirect, "Button", GUI_ID_OK, 26, 139, 97, 31, 0, 0},
- {BUTTON_CreateIndirect, "Button", GUI_ID_CANCEL, 179, 139, 100, 31, 0, 0},
- };
- static const GUI_WIDGET_CREATE_INFO _aDialogCreateMessage[] = {
- {FRAMEWIN_CreateIndirect, "Message", ID_FRAMEWIN_1, 80, 40, 160, 120, FRAMEWIN_CF_MOVEABLE, 0},
- {BUTTON_CreateIndirect, "Button", GUI_ID_BUTTON1, 40, 20, 80, 20, 0, 0},
- };
- static void _cbDialog(WM_MESSAGE *pMsg)
- {
- int NCode;
- int Id;
- WM_HWIN hDlg;
- WM_HWIN hItem;
- WM_HWIN hMsg;
-
- hDlg = pMsg->hWin;
-
- switch (pMsg->MsgId) {
- case WM_INIT_DIALOG:
- hItem = pMsg->hWin;
- FRAMEWIN_SetFont(hItem, &GUI_Font24_ASCII);
- FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
- FRAMEWIN_SetText(hItem, "armfly");
- hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0);
- EDIT_SetMaxLen(hItem, 20);
- EDIT_SetText(hItem, "www.armfly.com");
- EDIT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);
- EDIT_SetFont(hItem, &GUI_Font16_ASCII);
- EDIT_SetSel(hItem, 0, -1);
- hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON0);
- BUTTON_SetText(hItem, "Message");
- BUTTON_SetFont(hItem, &GUI_Font16_ASCII);
- hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_OK);
- BUTTON_SetText(hItem, "OK");
- BUTTON_SetFont(hItem, &GUI_Font16_ASCII);
- hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_CANCEL);
- BUTTON_SetText(hItem, "Cancel");
- BUTTON_SetFont(hItem, &GUI_Font16_ASCII);
- break;
- case WM_KEY:
- switch (((WM_KEY_INFO *)(pMsg->Data.p))->Key) {
- case GUI_KEY_ESCAPE:
- GUI_EndDialog(hDlg, 1);
- break;
- case GUI_KEY_ENTER:
- GUI_EndDialog(hDlg, 0);
- break;
- }
- break;
- case WM_NOTIFY_PARENT:
- Id = WM_GetId(pMsg->hWinSrc);
- NCode = pMsg->Data.v;
- switch (Id) {
- case GUI_ID_BUTTON0:
- switch (NCode) {
- case WM_NOTIFICATION_CLICKED:
- break;
- case WM_NOTIFICATION_RELEASED:
- hMsg = GUI_CreateDialogBox(_aDialogCreateMessage, GUI_COUNTOF(_aDialogCreateMessage), _cbDialogMessage, WM_HBKWIN, 0, 0);
- // hMsg = GUI_ExecDialogBox(_aDialogCreateMessage, GUI_COUNTOF(_aDialogCreateMessage), _cbDialogMessage, hDlg, 0, 0);
- break;
- }
- break;
- case GUI_ID_OK:
- switch (NCode) {
- case WM_NOTIFICATION_CLICKED:
- break;
- case WM_NOTIFICATION_RELEASED:
- GUI_EndDialog(hDlg, 0);
- break;
- }
- break;
- case GUI_ID_CANCEL:
- switch (NCode) {
- case WM_NOTIFICATION_CLICKED:
- break;
- case WM_NOTIFICATION_RELEASED:
- GUI_EndDialog(hDlg, 1);
- break;
- }
- break;
- }
- break;
- default:
- WM_DefaultProc(pMsg);
- break;
- }
- }
- static void _cbDialogMessage(WM_MESSAGE *pMsg)
- {
- int NCode;
- int Id;
- WM_HWIN hDlg;
- WM_HWIN hItem;
- hDlg = pMsg->hWin;
-
- switch (pMsg->MsgId) {
- case WM_INIT_DIALOG:
- hItem = pMsg->hWin;
- FRAMEWIN_SetFont(hItem, &GUI_Font24_ASCII);
- FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
- FRAMEWIN_SetText(hItem, "Message");
- hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_BUTTON1);
- BUTTON_SetText(hItem, "OK");
- BUTTON_SetFont(hItem, &GUI_Font16_ASCII);
- break;
- case WM_KEY:
- switch (((WM_KEY_INFO *)(pMsg->Data.p))->Key) {
- case GUI_KEY_ESCAPE:
- GUI_EndDialog(hDlg, 1);
- break;
- case GUI_KEY_ENTER:
- GUI_EndDialog(hDlg, 0);
- break;
- }
- break;
- case WM_NOTIFY_PARENT:
- Id = WM_GetId(pMsg->hWinSrc);
- NCode = pMsg->Data.v;
- switch (Id) {
- case GUI_ID_BUTTON1:
- switch (NCode) {
- case WM_NOTIFICATION_CLICKED:
- break;
- case WM_NOTIFICATION_RELEASED:
- GUI_EndDialog(hDlg, 1);
- break;
- }
- break;
- }
- break;
- case WM_DELETE:
- WM_SetFocus(hDialog);
- break;
- default:
- WM_DefaultProc(pMsg);
- break;
- }
- }
- static void _cbBkWindow(WM_MESSAGE* pMsg) {
- switch (pMsg->MsgId) {
- case WM_PAINT:
- GUI_SetBkColor(GUI_RED);
- GUI_Clear();
- GUI_SetColor(GUI_WHITE);
- GUI_SetFont(&GUI_Font24_ASCII);
- GUI_DispStringHCenterAt("Message Box - Sample", 480, 400);
- break;
- default:
- WM_DefaultProc(pMsg);
- }
- }
- void MainTask(void)
- {
- GUI_Init();
- WM_SetCallback(WM_HBKWIN, &_cbBkWindow);
- hDialog = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
- while(1) {
- // GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
- GUI_Delay(100);
- }
- }
复制代码 |
|