首页 > 代码库 > [ucgui] 对话框8——Framewin小工具

[ucgui] 对话框8——Framewin小工具

 

>_<" 这里主要是窗口小工具Framewin的用法介绍,包括创建背景窗口及其消息回调函数,创建Frame窗口并设置其回调函数,这里一些其他的功能被我注释掉了,有向状态栏添加最大最小按钮的操作,改变标题文本相关设置,设置标题可见性等~注意这里GUI_Delay();很重要,否则会黑屏~

  1 #include <stddef.h>  2 #include <string.h>  3 #include "GUI.h"  4 #include "FRAMEWIN.h"  5   6 #define SPEED   1200  7 #define MSG_CHANGE_MAIN_TEXT (WM_USER + 0)  8   9 static FRAMEWIN_Handle  _hFrame; 10 static WM_CALLBACK*     _pcbOldFrame; 11 static char             _acMainText[100]; 12 static int              _LockClose = 1; 13  14  15 //Frame窗口消息回调函数 16 static void _cbFrame(WM_MESSAGE * pMsg) { 17   switch (pMsg->MsgId) { 18   case WM_NOTIFY_PARENT: 19     if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) { 20       int Id = WM_GetId(pMsg->hWinSrc);      /* Id of widget */ 21       if (Id == GUI_ID_CLOSE) { 22         if (_LockClose) { 23           return; 24         } 25         _hFrame = 0; 26       } 27     } 28     break; 29   } 30   if (_pcbOldFrame) { 31     (*_pcbOldFrame)(pMsg); 32   } 33 } 34  35 //背景窗口回调函数 36 static void _cbBkWindow(WM_MESSAGE * pMsg) { 37   switch (pMsg->MsgId) { 38     case MSG_CHANGE_MAIN_TEXT: 39       strcpy(_acMainText, pMsg->Data.p); 40       WM_InvalidateWindow(pMsg->hWin); 41       break; 42     case WM_PAINT: 43       GUI_SetBkColor(GUI_BLACK); 44       GUI_Clear(); 45       GUI_SetColor(GUI_WHITE); 46       GUI_SetFont(&GUI_Font24_ASCII); 47       GUI_DispStringHCenterAt("WIDGET_FrameWin - Sample", 160, 5); 48       GUI_SetFont(&GUI_Font8x16); 49       GUI_DispStringHCenterAt(_acMainText, 160, 40); 50       GUI_SetFont(&GUI_Font6x8); 51       GUI_DispStringHCenterAt("The function FRAMEWIN_Create creates both the\n" 52                               "frame window and the client window.", 160, 190); 53       break; 54     default: 55       WM_DefaultProc(pMsg); 56   } 57 } 58  59 static void _DemoFramewin(void) { 60   int i; 61   WM_HWIN hChild; 62   /* Set callback for background window */ 63   WM_SetCallback(WM_HBKWIN, _cbBkWindow);  //背景窗口消息回调函数 64   _hFrame = FRAMEWIN_Create("Frame window", 0, WM_CF_SHOW, 50, 75, 220, 100); 65   /* Set callback for frame window */ 66   _pcbOldFrame = WM_SetCallback(_hFrame, _cbFrame); 67 //  /* Set moveable */ 68   FRAMEWIN_SetMoveable(_hFrame, 1); 69 //  /*给窗口加入几个最大最小化按钮 */ 70 //  FRAMEWIN_AddCloseButton(_hFrame, 0, 0); 71 //  FRAMEWIN_AddMaxButton(_hFrame, FRAMEWIN_BUTTON_RIGHT, 0); 72 //  FRAMEWIN_AddMinButton(_hFrame, FRAMEWIN_BUTTON_RIGHT, 2); 73   /* Modify frame window attributes */ 74   FRAMEWIN_SetActive(_hFrame, 1); 75 //  FRAMEWIN_SetFont(_hFrame, &GUI_Font16B_ASCII); 76 //  FRAMEWIN_SetTitleHeight(_hFrame, 20); 77 // 78 //  FRAMEWIN_SetTextColor(_hFrame, GUI_YELLOW); 79 //  FRAMEWIN_SetTextAlign(_hFrame, GUI_TA_HCENTER); 80 //  FRAMEWIN_Minimize(_hFrame); 81 //  FRAMEWIN_Maximize(_hFrame); 82 //  FRAMEWIN_Restore(_hFrame); 83 //  for (i = 0; i < 5; i++) { 84 //    FRAMEWIN_SetTitleVis(_hFrame, 0); 85 //    GUI_Delay(200); 86 //    FRAMEWIN_SetTitleVis(_hFrame, 1); 87 //    GUI_Delay(200); 88 //  } 89 //  /* Time to play with frame window */ 90     while(1){ 91         GUI_Delay(200000000); 92     } 93 //  _LockClose = 0; 94 //  if (_hFrame) { 95 //    FRAMEWIN_Delete(_hFrame); 96 //  } 97 } 98  99 void test(void) {100   GUI_Init();101   WM_EnableMemdev(WM_HBKWIN);102   _DemoFramewin();103 }

 

[ucgui] 对话框8——Framewin小工具