亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? widget_menu.c

?? ucgu最新版本 4.14
?? C
字號:
/*********************************************************************
*                SEGGER MICROCONTROLLER SYSTEME GmbH                 *
*        Solutions for real time microcontroller applications        *
**********************************************************************
*                                                                    *
*        (c) 1996 - 2007  SEGGER Microcontroller Systeme GmbH        *
*                                                                    *
*        Internet: www.segger.com    Support:  support@segger.com    *
*                                                                    *
**********************************************************************

** emWin V4.14 - Graphical user interface for embedded applications **
emWin is protected by international copyright laws.   Knowledge of the
source code may not be used to write a similar product.  This file may
only be used in accordance with a license and should not be re-
distributed in any way. We appreciate your understanding and fairness.
----------------------------------------------------------------------
File        : WIDGET_Menu.c
Purpose     : Shows how to work with menu widget
----------------------------------------------------------------------
*/

#include <windows.h>
#include <stdio.h>
#include "GUI.h"
#include "DIALOG.h"
#include "MENU.h"
#include "MESSAGEBOX.h"

/*********************************************************************
*
*       Defines
*
**********************************************************************
*/
#define ID_MENU             (GUI_ID_USER +  0)
#define ID_MENU_FILE_NEW    (GUI_ID_USER +  1)
#define ID_MENU_FILE_OPEN   (GUI_ID_USER +  2)
#define ID_MENU_FILE_CLOSE  (GUI_ID_USER +  3)
#define ID_MENU_FILE_EXIT   (GUI_ID_USER +  4)
#define ID_MENU_FILE_RECENT (GUI_ID_USER +  5)
#define ID_MENU_RECENT_0    (GUI_ID_USER +  6)
#define ID_MENU_RECENT_1    (GUI_ID_USER +  7)
#define ID_MENU_RECENT_2    (GUI_ID_USER +  8)
#define ID_MENU_RECENT_3    (GUI_ID_USER +  9)
#define ID_MENU_EDIT_UNDO   (GUI_ID_USER + 10)
#define ID_MENU_EDIT_REDO   (GUI_ID_USER + 11)
#define ID_MENU_EDIT_COPY   (GUI_ID_USER + 12)
#define ID_MENU_EDIT_PASTE  (GUI_ID_USER + 13)
#define ID_MENU_EDIT_DELETE (GUI_ID_USER + 14)
#define ID_MENU_HELP_ABOUT  (GUI_ID_USER + 15)

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/
static WM_HWIN _hMenu;
static WM_HWIN _hText;
static WM_HWIN _hFrame;

static char * _paMenu[] = {
  "ID_MENU_FILE_NEW",
  "ID_MENU_FILE_OPEN",
  "ID_MENU_FILE_CLOSE",
  "ID_MENU_FILE_EXIT",
  "ID_MENU_FILE_RECENT",
  "ID_MENU_RECENT_0",
  "ID_MENU_RECENT_1",
  "ID_MENU_RECENT_2",
  "ID_MENU_RECENT_3",
  "ID_MENU_EDIT_UNDO",
  "ID_MENU_EDIT_REDO",
  "ID_MENU_EDIT_COPY",
  "ID_MENU_EDIT_PASTE",
  "ID_MENU_EDIT_DELETE",
  "ID_MENU_HELP_ABOUT"
};

static char * _paDescription[] = {
  "Creates a new file",
  "Opens an existing file",
  "Closes the file",
  "Quits the application",
  " ",
  "Opens file 1",
  "Opens file 2",
  "Opens file 3",
  "Opens file 4",
  "Undoes the last action",
  "Redoes the previously undone action",
  "Copies to clipboard",
  "Inserts contents of clipboard",
  "Deletes the selection",
  "Displays program information"
};

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/
/*********************************************************************
*
*       _AddMenuItem
*/
static void _AddMenuItem(MENU_Handle hMenu, MENU_Handle hSubmenu, const char* pText, U16 Id, U16 Flags) {
  MENU_ITEM_DATA Item;
  Item.pText    = pText;
  Item.hSubmenu = hSubmenu;
  Item.Flags    = Flags;
  Item.Id       = Id;
  MENU_AddItem(hMenu, &Item);
}

/*********************************************************************
*
*       _CreateMenu
*
* Purpose:
*   Creates the menu widget
*/
static WM_HWIN _CreateMenu(WM_HWIN hParent) {
  MENU_Handle hMenu, hMenuFile, hMenuEdit, hMenuHelp, hMenuRecent;
  // Create main menu
  hMenu       = MENU_CreateEx(0, 0, 0, 0, WM_UNATTACHED, 0, MENU_CF_HORIZONTAL, ID_MENU);
  // Create sub menus
  hMenuFile   = MENU_CreateEx(0, 0, 0, 0, WM_UNATTACHED, 0, MENU_CF_VERTICAL, 0);
  hMenuEdit   = MENU_CreateEx(0, 0, 0, 0, WM_UNATTACHED, 0, MENU_CF_VERTICAL, 0);
  hMenuHelp   = MENU_CreateEx(0, 0, 0, 0, WM_UNATTACHED, 0, MENU_CF_VERTICAL, 0);
  hMenuRecent = MENU_CreateEx(0, 0, 0, 0, WM_UNATTACHED, 0, MENU_CF_VERTICAL, 0);
  // Add menu items to menu 'Recent'
  _AddMenuItem(hMenuRecent, 0,           "File 1",   ID_MENU_RECENT_0,    0);
  _AddMenuItem(hMenuRecent, 0,           "File 2",   ID_MENU_RECENT_1,    0);
  _AddMenuItem(hMenuRecent, 0,           "File 3",   ID_MENU_RECENT_2,    0);
  _AddMenuItem(hMenuRecent, 0,           "File 4",   ID_MENU_RECENT_3,    0);
  // Add menu items to menu 'File'
  _AddMenuItem(hMenuFile,   0,           "New",      ID_MENU_FILE_NEW,    0);
  _AddMenuItem(hMenuFile,   0,           "Open",     ID_MENU_FILE_OPEN,   0);
  _AddMenuItem(hMenuFile,   0,           "Close",    ID_MENU_FILE_CLOSE,  MENU_IF_DISABLED);
  _AddMenuItem(hMenuFile,   0,           0,          0,                   MENU_IF_SEPARATOR);
  _AddMenuItem(hMenuFile,   hMenuRecent, "Files...", ID_MENU_FILE_RECENT, 0);
  _AddMenuItem(hMenuFile,   0,           0,          0,                   MENU_IF_SEPARATOR);
  _AddMenuItem(hMenuFile,   0,           "Exit",     ID_MENU_FILE_EXIT,   0);
  // Add menu items to menu 'Edit'
  _AddMenuItem(hMenuEdit,   0,           "Undo",     ID_MENU_EDIT_UNDO,   0);
  _AddMenuItem(hMenuEdit,   0,           "Redo",     ID_MENU_EDIT_REDO,   0);
  _AddMenuItem(hMenuEdit,   0,           0,          0,                   MENU_IF_SEPARATOR);
  _AddMenuItem(hMenuEdit,   0,           "Copy",     ID_MENU_EDIT_COPY,   0);
  _AddMenuItem(hMenuEdit,   0,           "Paste",    ID_MENU_EDIT_PASTE,  0);
  _AddMenuItem(hMenuEdit,   0,           "Delete",   ID_MENU_EDIT_DELETE, 0);
  // Add menu items to menu 'Help'
  _AddMenuItem(hMenuHelp,   0,           "About",    ID_MENU_HELP_ABOUT,  0);
  // Add menu items to main menu
  _AddMenuItem(hMenu,       hMenuFile,   "File",     0,                   0);
  _AddMenuItem(hMenu,       hMenuEdit,   "Edit",     0,                   0);
  _AddMenuItem(hMenu,       hMenuHelp,   "Help",     0,                   0);
  // Attach menu to parent window
  FRAMEWIN_AddMenu(hParent, hMenu);
  return hMenu;
}

/*********************************************************************
*
*       _DrawGradientV
*
* Purpose:
*   Draws a vertical gradient
*/
static void _DrawGradientV(int x0, int y0, int x1, int y1, GUI_COLOR Color0, GUI_COLOR Color1) {
  int r0, g0, b0, r1, g1, b1;
  int y, ySize;
  ySize = y1 - y0 + 1;
  r0 = (Color0 >>  0) & 0x000000ff;
  g0 = (Color0 >>  8) & 0x000000ff;
  b0 = (Color0 >> 16) & 0x000000ff;
  r1 = (Color1 >>  0) & 0x000000ff;
  g1 = (Color1 >>  8) & 0x000000ff;
  b1 = (Color1 >> 16) & 0x000000ff;
  for (y = y0; y <= y1; y++) {
    GUI_COLOR Color;
    int r, g, b, Diff;
    Diff = y - y0;
    r = r0 + (r1 - r0) * Diff / ySize;
    g = g0 + (g1 - g0) * Diff / ySize;
    b = b0 + (b1 - b0) * Diff / ySize;
    Color = r | (g << 8) | (b << 16);
    GUI_SetColor(Color);
    GUI_DrawHLine(y, x0, x1);
  }
}

/*********************************************************************
*
*       _MessageBox
*
* Purpose:
*   Creates and executes a modal message box
*/
static void _MessageBox(const char * pText, const char * pCaption) {
  WM_HWIN hBox;
  hBox = MESSAGEBOX_Create(pText, pCaption, GUI_MESSAGEBOX_CF_MODAL | GUI_MESSAGEBOX_CF_MOVEABLE);
  WM_SetStayOnTop(hBox, 1);
  WM_BringToTop(hBox);
  GUI_ExecCreatedDialog(hBox);
  WM_SetFocus(_hMenu);
  MENU_SetSel(_hMenu, -1);
}

/*********************************************************************
*
*       _cbClient
*
* Purpose:
*   Callback routine of client window which 'owns' the menu widget
*   and the status bar
*/
static void _cbClient(WM_MESSAGE * pMsg) {
  char acBuffer[50];
  int Index, xSize, ySize, xPos, yPos;
  WM_HWIN hWin, hClient;
  MENU_MSG_DATA * pData;
  MENU_ITEM_DATA Data;
  hWin = pMsg->hWin;
  hClient = WM_GetClientWindow(hWin);
  xSize = WM_GetWindowSizeX(hClient);
  ySize = WM_GetWindowSizeY(hClient);
  switch (pMsg->MsgId) {
  case WM_SIZE:
    //
    // Adjusts text widget on changinmg the size
    //
    xPos = WM_GetWindowOrgX(hClient);
    yPos = WM_GetWindowOrgY(hClient);
    WM_SetWindowPos(_hText, xPos + 4, yPos + ySize - 10, xSize, 10);
    WM_SetWindowPos(_hMenu, xPos    , yPos             , xSize, WM_GetWindowSizeY(_hMenu));
    TEXT_SetText(_hText, "Ready");
    break;
  case WM_PAINT:
    //
    // Draws the background of the client window
    //
    _DrawGradientV(0, 0, xSize - 1, ySize - 12 - 1, GUI_WHITE, GUI_LIGHTBLUE);
    GUI_SetColor(GUI_LIGHTGRAY);
    GUI_FillRect(0, ySize - 12, xSize - 1, ySize - 1);
    GUI_SetTextMode(GUI_TM_TRANS);
    GUI_SetColor(GUI_BLACK);
    GUI_SetFont(&GUI_Font24B_ASCII);
    GUI_DispStringHCenterAt(
      "MENU widget sample"
      , xSize / 2, 40);
    GUI_SetFont(&GUI_Font16B_ASCII);
    GUI_DispStringHCenterAt(
      "The sample shows how to use the MENU\n"
      "widget. Use the keyboard or the pointer\n"
      "input device for playing with the widget.\n"
      "On highlighting a menu item the status\n"
      "bar shows a small description. On selecting\n"
      "a menu item a message box will be shown."
      , xSize / 2, 70);
    break;
  case WM_MENU:
    pData = (MENU_MSG_DATA*)pMsg->Data.p;
    switch (pData->MsgType) {
    case MENU_ON_ITEMPRESSED:
      //
      // This message is send regardless of the item state is disabled or not
      //
      MENU_GetItem(pMsg->hWinSrc, pData->ItemId, &Data);
      if (Data.Flags & MENU_IF_DISABLED) {
        _MessageBox("The pressed item was disabled", "Message");
      }
      break;
    case MENU_ON_ITEMACTIVATE:
      //
      // This message is send on highlighting a menu item
      //
      Index = pData->ItemId - ID_MENU_FILE_NEW;
      if (Index >= 0) {
        TEXT_SetText(_hText, _paDescription[pData->ItemId - ID_MENU_FILE_NEW]);
      } else {
        TEXT_SetText(_hText, "Ready");
      }
      break;
    case MENU_ON_ITEMSELECT:
      //
      // This message is send only if an enabled item has been selected
      //
      sprintf(acBuffer, "ID of the selected\nitem is 0x%X", pData->ItemId);
      _MessageBox(acBuffer, "Message");
      break;
    }
  }
  WM_DefaultProc(pMsg);
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       MainTask
*/
void MainTask(void) {
  int xSize, ySize;
  WM_HWIN hClient;
  GUI_Init();
  //
  // Enable use of memory devices (if available)
  //
  #if GUI_SUPPORT_MEMDEV
    WM_SetCreateFlags(WM_CF_MEMDEV);
    WM_EnableMemdev(WM_HBKWIN);
  #endif
  WM_SetDesktopColor(GUI_BLACK);
  MENU_SetDefaultEffect(&WIDGET_Effect_3D1L);
  //
  // Create frame window
  //
  _hFrame = FRAMEWIN_CreateEx(10, 10, 300, 220, WM_HBKWIN, WM_CF_SHOW, FRAMEWIN_CF_MOVEABLE, 0, "Application with menu", _cbClient);
  FRAMEWIN_SetFont(_hFrame, &GUI_Font13_ASCII);
  FRAMEWIN_AddMaxButton(_hFrame, FRAMEWIN_BUTTON_RIGHT, 0);
  FRAMEWIN_AddMinButton(_hFrame, FRAMEWIN_BUTTON_RIGHT, 2);
  //
  // Create menu widget
  //
  _hMenu = _CreateMenu(_hFrame);
  //
  // Create text widget as simple status bar
  //
  hClient = WM_GetClientWindow(_hFrame);
  xSize = WM_GetWindowSizeX(hClient);
  ySize = WM_GetWindowSizeY(hClient);
  _hText = TEXT_CreateEx(4, ySize - 10, xSize, 10, hClient, WM_CF_SHOW, 0, GUI_ID_TEXT0, "Ready");
  TEXT_SetFont(_hText, &GUI_Font8_ASCII);
  //
  // Set keyboard focus to menu widget
  //
  WM_SetFocus(_hMenu);
  MENU_SetSel(_hMenu, -1);
  while (1) {
    GUI_Delay(100);
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色图一区二区三区| 欧美精品电影在线播放| 天堂在线一区二区| 亚洲免费看黄网站| 一区二区三区中文字幕精品精品 | 日韩一区二区三区免费看| 欧美视频一区二区三区四区| 久久五月婷婷丁香社区| 日韩欧美国产高清| 欧美精品一区二区久久婷婷| 国产夜色精品一区二区av| 欧美激情中文不卡| 亚洲欧美一区二区在线观看| 亚洲品质自拍视频| 国产盗摄精品一区二区三区在线 | 免费在线观看成人| 国产一区999| 色综合久久中文字幕综合网| 在线精品视频一区二区三四| 在线电影院国产精品| 亚洲靠逼com| 另类小说欧美激情| 成人综合婷婷国产精品久久 | 全部av―极品视觉盛宴亚洲| 91亚洲精品乱码久久久久久蜜桃| 91污片在线观看| 国产欧美综合色| 亚洲男女毛片无遮挡| 大尺度一区二区| 国产情人综合久久777777| 国内精品久久久久影院薰衣草| 成人高清视频在线| 欧美日精品一区视频| 亚洲综合色婷婷| 国产一区二区h| 久久一二三国产| 国产伦理精品不卡| 国产欧美一区二区三区在线老狼| 国产一区二区伦理| xf在线a精品一区二区视频网站| 久久国产生活片100| wwww国产精品欧美| 国产成人av电影在线播放| 欧美日韩精品高清| 中文字幕在线视频一区| 午夜精品视频一区| 不卡视频免费播放| 亚洲毛片av在线| 在线不卡a资源高清| 久久精品国产久精国产| 久久亚洲影视婷婷| proumb性欧美在线观看| 精品裸体舞一区二区三区| 一级日本不卡的影视| 精品视频1区2区| 麻豆国产一区二区| 欧美日韩色一区| 国内外精品视频| 中文字幕中文字幕一区二区| 欧美亚洲免费在线一区| 美女诱惑一区二区| 国产精品国产精品国产专区不片| 在线视频你懂得一区二区三区| 午夜精品久久久久久不卡8050| 精品国产91洋老外米糕| 一本一道久久a久久精品综合蜜臀| 亚洲午夜电影在线观看| 色先锋久久av资源部| 日日骚欧美日韩| 国产欧美1区2区3区| 欧美日韩亚洲综合在线| 国产美女精品一区二区三区| 亚洲日本韩国一区| 色综合中文字幕国产| 1000精品久久久久久久久| 欧美日韩的一区二区| 成人精品鲁一区一区二区| 日韩精品免费专区| 亚洲欧洲av在线| 欧美精品一区二区三区蜜桃 | 一二三区精品福利视频| 精品国产免费人成在线观看| 一本一道久久a久久精品| 国产在线视频精品一区| 午夜精品久久一牛影视| 日韩伦理电影网| 久久亚洲一区二区三区四区| 欧美手机在线视频| 91日韩一区二区三区| 国产91综合网| 国内一区二区在线| 免费不卡在线视频| 亚洲 欧美综合在线网络| 欧美精品在线观看播放| 91免费视频大全| 成人午夜视频免费看| 精品一区二区三区免费视频| 日本一区二区免费在线| 日韩精品一区二区三区四区| 欧美日韩在线直播| 色先锋资源久久综合| 91原创在线视频| 97精品视频在线观看自产线路二| 一区av在线播放| 一区二区在线观看免费| 亚洲同性同志一二三专区| 久久精品无码一区二区三区| 日韩一区二区三| 欧美一区二区三区在线视频| 成人av电影在线网| 福利电影一区二区| 国产精品白丝av| 亚洲久草在线视频| 综合激情网...| 国产精品福利影院| 中文字幕一区二区在线播放 | 色综合av在线| 99re这里都是精品| 色婷婷综合激情| 欧美在线免费视屏| 欧美日韩和欧美的一区二区| 欧美精品乱码久久久久久| 欧美男人的天堂一二区| 欧美一区日本一区韩国一区| 91精品国产aⅴ一区二区| 日韩欧美中文一区| 久久精品综合网| 国产喂奶挤奶一区二区三区| 久久毛片高清国产| 欧美人与z0zoxxxx视频| 欧美日本高清视频在线观看| 制服.丝袜.亚洲.中文.综合| 国产成人午夜精品影院观看视频| 国产91对白在线观看九色| 成人sese在线| 欧美吞精做爰啪啪高潮| 日韩欧美一级精品久久| 欧美精品一区二区三区蜜桃 | 久久91精品国产91久久小草| 国产一区亚洲一区| 97久久精品人人爽人人爽蜜臀| 欧美午夜免费电影| 欧美一级高清大全免费观看| 久久婷婷一区二区三区| 亚洲欧美一区二区三区孕妇| 亚洲高清不卡在线| 国产精品一区二区x88av| 91在线观看一区二区| 欧美一区二区在线观看| 国产无一区二区| 视频在线观看一区| 高清在线不卡av| 欧美喷潮久久久xxxxx| 久久精品日产第一区二区三区高清版 | 久久精品国产澳门| www.亚洲激情.com| 在线成人免费视频| 亚洲欧洲精品成人久久奇米网| 日韩精品一级中文字幕精品视频免费观看 | 欧美一区二区久久久| 日av在线不卡| jizzjizzjizz欧美| 日韩精品在线一区| 亚洲一区二区三区四区的| 国产伦精品一区二区三区免费迷 | 韩国女主播一区| 日本精品视频一区二区| 91小视频在线观看| 精品久久免费看| 午夜精品福利在线| zzijzzij亚洲日本少妇熟睡| 日韩免费看的电影| 性做久久久久久久免费看| 成人动漫中文字幕| 久久久久久久久久久久久久久99| 午夜久久久久久| 在线观看不卡一区| 国产精品久久久久久久裸模| 久久国产精品99久久久久久老狼 | 亚洲成人一区二区在线观看| 国产69精品久久777的优势| 欧美一区二区国产| 亚洲午夜日本在线观看| 不卡在线观看av| 国产精品久久久久久户外露出| 精久久久久久久久久久| 91精品国产一区二区| 亚洲成人先锋电影| 91国产精品成人| 亚洲视频一区二区在线观看| 丁香一区二区三区| 欧美精品一区二区久久久| 精品午夜一区二区三区在线观看| 欧美精选在线播放| 亚洲高清免费视频| 欧美日韩国产电影| 视频一区在线播放| 欧美精品久久天天躁| 日韩电影在线观看网站| 国内精品伊人久久久久av影院|