|
emWin 兩個窗口間的切換
- #include "DIALOG.h"
- #define ID_FRAMEWIN_0 (GUI_ID_USER + 0x00)
- #define ID_BUTTON_0 (GUI_ID_USER + 0x01)
- #define ID_BUTTON_1 (GUI_ID_USER + 0x02)
- static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = { //控件結構體數組
- { FRAMEWIN_CreateIndirect, "Framewin", ID_FRAMEWIN_0, 0, 0, 320, 240, FRAMEWIN_CF_MOVEABLE, 0x64, 0 },
- { BUTTON_CreateIndirect, "Button", ID_BUTTON_0, 5, 180, 60, 25, 0, 0x0, 0 },
- { BUTTON_CreateIndirect, "Button", ID_BUTTON_1, 75, 180, 60, 25, 0, 0x0, 0 },
- };
- extern WM_HWIN hPage[4];
- static void _cbDialog(WM_MESSAGE * pMsg)
- {
- WM_HWIN hItem;
- int NCode;
- int Id;
- switch (pMsg->MsgId)
- {
- case WM_INIT_DIALOG: //初始化消息,創建窗口/控件時有效,比如在這里設置一些
- 控件的初始參數
- hItem = pMsg->hWin;
- FRAMEWIN_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER);
- FRAMEWIN_SetText(hItem, "Page 0");
- FRAMEWIN_SetTitleHeight(hItem, 18);
- FRAMEWIN_SetFont(hItem, GUI_FONT_16B_1);
- FRAMEWIN_SetTextColor(hItem, (0x008000FF));
- FRAMEWIN_AddCloseButton(hItem, FRAMEWIN_BUTTON_RIGHT, 0);
- FRAMEWIN_AddMaxButton(hItem, FRAMEWIN_BUTTON_RIGHT, 0);
- FRAMEWIN_AddMinButton(hItem, FRAMEWIN_BUTTON_RIGHT, 0);
- FRAMEWIN_SetClientColor(pMsg->hWin, GUI_GREEN);
- hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
- BUTTON_SetText(hItem, "Return");
- hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
- BUTTON_SetText(hItem, "Next");
- break;
- case WM_PAINT: //窗口重繪消息,這個比較難說明白,反正在Framewin或Window
- 窗體之中我們一般是用控
- //件,如果要在Framewin或Window窗體之中顯示文字或繪制直線、
- 矩形、圓等在這里實現
- GUI_SetColor(GUI_BLUE); //設置前景顏色
- GUI_SetFont((GUI_FONT *)&GUI_Font16_ASCII); //設置當前字庫
- GUI_SetTextMode(GUI_TEXTMODE_TRANS); //設置文字透明顯示
- GUI_DispStringAt("neqee.com", 3, 3); //重繪顯示文字
- break;
- case WM_NOTIFY_PARENT: //操作觸發消息處理(操作屏幕程序會跑到這里),
- 比如點擊按鍵、點擊編輯框(任何的操作)等等......
- Id = WM_GetId(pMsg->hWinSrc);
- NCode = pMsg->Data.v;
- switch(Id) {
- case ID_BUTTON_0: //ID為ID_BUTTON_0的按鍵被點擊
- switch(NCode)
- {
- case WM_NOTIFICATION_CLICKED: //按下動作消息
- break;
- case WM_NOTIFICATION_RELEASED: //彈起動作消息
- break;
- }
- break;
- case ID_BUTTON_1: //ID為ID_BUTTON_1的按鍵被點擊
- switch(NCode)
- {
- case WM_NOTIFICATION_CLICKED: //按下動作消息
- break;
- case WM_NOTIFICATION_RELEASED: //彈起動作消息
- WM_HideWindow(hPage[0]); //隱藏Page 0
- WM_ShowWindow(hPage[1]); //顯示Page 1
- break;
- }
- break;
- }
- break;
- default:
- WM_DefaultProc(pMsg);
- break;
- }
- }
- static void _cbBackGround(WM_MESSAGE* pMsg) //桌面背景的回調函數
- {
- switch (pMsg->MsgId)
- {
- case WM_PAINT: //窗口重繪消息,這個比較難說明白,反正在Framewin
- 或Window窗體之中我們一般是用控
- //件,如果要在Framewin或Window窗體之中顯示文字
- 或繪制直線、矩形、圓等在這里實現
- GUI_SetBkColor(GUI_RED); //設置背景顏色
- GUI_Clear(); //清屏
- break;
- default: WM_DefaultProc(pMsg); break;
- }
- }
- WM_HWIN CreateFramewin0(WM_HWIN hParent);
- WM_HWIN CreateFramewin0(WM_HWIN hParent)
- {
- WM_HWIN hWin;
- WM_SetCallback(WM_HBKWIN, _cbBackGround); //設置桌面背景的回調函數
- hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, hParent, 0, 0);
- return hWin;
- }
復制代碼
|
-
-
enWin兩個窗口切換.docx
2018-9-14 12:07 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
15.12 KB, 下載次數: 64, 下載積分: 黑幣 -5
評分
-
查看全部評分
|