zoukankan      html  css  js  c++  java
  • [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
    "
     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 }
  • 相关阅读:
    visual studio code 中文
    vue中常用插件(货币、日期)
    PS与CSS字间距转换
    常用css样式(文字超出部分用省略号显示、鼠标经过图片放大、出现阴影)
    swiper在一个页面多个轮播图
    git上传项目
    Win10下安装SVN出现2503/2502解决方法
    关于yii2学习笔记:gii的使用
    nginx反向代理解决跨域
    树莓派4安装centos
  • 原文地址:https://www.cnblogs.com/zjutlitao/p/3935042.html
Copyright © 2011-2022 走看看