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

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

?? mt_multitasking.c

?? uCGUI
?? C
字號:
/***********************************************************************************************************                                                uC/GUI*                        Universal graphic software for embedded applications**                       (c) Copyright 2002, Micrium Inc., Weston, FL*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH**              礐/GUI 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 redistributed*              in any way. We appreciate your understanding and fairness.*----------------------------------------------------------------------
File        : MT_MultiTasking.c
Purpose     : Example demonstrates MultiTasking capabilities of emWin
----------------------------------------------------------------------
*/

#include "GUI.h"
#include "GUI_X.h"
#include "FrameWin.h"
#include <stddef.h>

#if GUI_OS == 0
  #error Multitasking sample requires task awareness (#define GUI_OS 1)
#endif
/*******************************************************************
*
*          Define how to create a task and start multitasking
*
********************************************************************

  If not using embOS you have to change the hardware
  dependent macros to work with your OS

*/

#ifndef WIN32 
  #include "RTOS.h"    /* Definitions for embOS */
  #define CREATE_TASK(pTCB, pName, pFunc, Priority, pStack)  OS_CREATETASK(pTCB, pName, pFunc, Priority, pStack)
  #define START_MT() OS_Start()
  #define Delay(t) OS_Delay(t)
#else
  #include "SIM.h"     /* Definitions for the Win32 simulation */
  #define CREATE_TASK(pTCB, pName, pFunc, Priority, pStack)   SIM_CreateTask(pName, pFunc, Priority)
  #define START_MT()  SIM_Start()
  #define Delay(t)    SIM_Delay(t)
#endif

/*******************************************************************
*
*          Callback routine of child window from task 0
*
********************************************************************
*/

static int XPos;
static const char aText[] = "Moving text...";

static void cbCallbackT0(WM_MESSAGE * pMsg) {
  switch (pMsg->MsgId) {
  case WM_PAINT:
    /* Handle the paint message */
    GUI_SetBkColor(GUI_RED);
    GUI_SetColor(GUI_BLACK);
    GUI_SetFont(&GUI_FontComic24B_ASCII);
    GUI_Clear();
    GUI_DispStringAt(aText, XPos, 0);
    break;
  default:
    WM_DefaultProc(pMsg);
  }
}

/*******************************************************************
*
*          Callback routine of child window from task 1
*
********************************************************************
*/

static void cbCallbackT1(WM_MESSAGE * pMsg) {
  WM_HWIN hWin = (FRAMEWIN_Handle)(pMsg->hWin);
  switch (pMsg->MsgId) {
  case WM_PAINT:
    /* Handle the paint message */
    GUI_SetBkColor(GUI_BLUE);
    GUI_SetColor(GUI_WHITE);
    GUI_SetFont(&GUI_FontComic24B_ASCII);
    GUI_SetTextAlign(GUI_TA_HCENTER | GUI_TA_VCENTER);
    GUI_Clear();
    GUI_DispStringHCenterAt("Moving window...", 
                            WM_GetWindowSizeX(hWin) / 2, 
                            WM_GetWindowSizeY(hWin) / 2);
    break;
  default:
    WM_DefaultProc(pMsg);
  }
}
/*******************************************************************
*
*          Callback routine of background window
*
********************************************************************
*/

static void cbBackgroundWin(WM_MESSAGE* pMsg) {
  switch (pMsg->MsgId) {
  case WM_PAINT:
    /* Handle only the paint message */
    GUI_SetBkColor(GUI_GREEN);
    GUI_Clear();
    GUI_SetFont(&GUI_Font13HB_1);
    GUI_DispStringHCenterAt("emWinGSC - multitasking demo\n", 160, 0);
    GUI_SetFont(&GUI_Font13_1);
    GUI_DispStringHCenterAt("Scrolling text and moving windows without flickering", 
                            160, GUI_GetDispPosY());
  default:
    WM_DefaultProc(pMsg);
  }
}
/*******************************************************************
*
*          Task 0: Moves the text in the client window
*
********************************************************************
*/

static void Task_0(void) {
  /* Create frame window */
  FRAMEWIN_Handle hFrameWin = FRAMEWIN_Create("Task 0",  NULL, WM_CF_SHOW | WM_CF_STAYONTOP,  0, 40, 200, 40);
  /* Create child window */
  WM_HWIN         hChildWin = WM_CreateWindowAsChild(0, 0, 0, 0, hFrameWin, 
                                                     WM_CF_SHOW | WM_CF_MEMDEV,  cbCallbackT0, 0);
  FRAMEWIN_SetActive(hFrameWin, 0);
  /* Make sure the right window is active... */
  WM_SelectWindow(hChildWin);
  /* ...and the right font is selected */
  GUI_SetFont(&GUI_FontComic24B_ASCII);
  while(1) {
    GUI_RECT Rect;
    int XLen = GUI_GetStringDistX(aText);   /* Get the length of the string */
    WM_GetClientRect(&Rect);                /* Get the size of the window */
    /* Show moving text */
    for (XPos = 0; XPos < (Rect.x1 - Rect.x0) - XLen; XPos++) {
      WM_InvalidateWindow(hChildWin);
      Delay(50);
    }
    for (; XPos >= 0; XPos--) {
      WM_InvalidateWindow(hChildWin);
      Delay(100);
    }
  }
}


/*******************************************************************
*
*          Task 1: Moves frame- and client window continously
*/

static void Task_1(void) {
  /* Create frame window */
  FRAMEWIN_Handle hFrameWin = FRAMEWIN_Create("Task 1", NULL, WM_CF_SHOW | WM_CF_STAYONTOP, 
                                              20, 170, 200, 40);
  /* Create child window */
  WM_HWIN         hChildWin = WM_CreateWindowAsChild(0, 0, 0, 0, hFrameWin, WM_CF_SHOW | WM_CF_MEMDEV, cbCallbackT1, 0);
  FRAMEWIN_SetActive(hFrameWin, 0);
  while(1) {
    int i;
    int nx =  80;
    int ny = 160;
    /* Move window continously */
    for (i = 0; i < ny; i++) {
      WM_MoveWindow(hFrameWin, 0, -2);
      Delay(50);
    }
    for (i = 0; i < nx; i++) {
      WM_MoveWindow(hFrameWin, 2, 0);
      Delay(50);
    }
    for (i = 0; i < ny; i++) {
      WM_MoveWindow(hFrameWin, 0, 2);
      Delay(50);
    }
    for (i = 0; i < nx; i++) {
      WM_MoveWindow(hFrameWin, -2, 0);
      Delay(50);
    }
  }
}


/*******************************************************************
*
*          GUI background processing
*
* This task does the background processing.
* The main job is to update invalid windows, but other things such as
* evaluating mouse or touch input may also be done.
*/
void GUI_Task(void) {
  while(1) {
    GUI_Exec();           /* Do the background work ... Update windows etc.) */
    GUI_X_ExecIdle();     /* Nothing left to do for the moment ... Idle processing */
  }
}


/*******************************************************************
*
*                 main
*/

#ifndef WIN32
  /* Stacks */
  static OS_STACKPTR int Stack_0[600];
  static OS_STACKPTR int Stack_1[600];
  static OS_STACKPTR int Stack_2[600];
  static OS_TASK aTCB[3];                   /* Task control blocks */
#endif

void main(void) {
  #ifndef WIN32
    /* Init hardware */
    OS_InitKern();
    OS_InitHW();
  #endif
  /* Init GUI */
  GUI_Init();
  WM_SetCallback(WM_HBKWIN, cbBackgroundWin);    /* Set callback for background window */
  /* Create tasks */
  CREATE_TASK(&aTCB[0], "Task_0", Task_0, 100, Stack_0);
  CREATE_TASK(&aTCB[1], "Task_1", Task_1,  50, Stack_1);
  CREATE_TASK(&aTCB[2], "GUI_TASK", GUI_Task,  1, Stack_2);
  /* Start multitasking */
  START_MT();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费不卡电影| 成人高清视频在线| **欧美大码日韩| 日韩欧美激情在线| 欧美日本在线观看| 成人av网站在线| 国产高清不卡二三区| 蜜桃视频一区二区三区| 亚洲午夜电影在线观看| 1024成人网| 亚洲激情自拍偷拍| 亚洲免费观看视频| 亚洲免费观看在线视频| 亚洲欧美另类小说视频| 国产精品区一区二区三区| 国产亚洲一区二区在线观看| 久久久精品天堂| 国产女人18水真多18精品一级做| 日韩欧美在线1卡| 日韩美女一区二区三区| 精品国产一区二区三区av性色| 日韩一级二级三级| 久久色中文字幕| 国产精品美女久久久久av爽李琼 | 蜜桃久久久久久| 亚洲第一搞黄网站| 日韩精品每日更新| 麻豆免费精品视频| 国产精品一区二区在线播放 | 免费成人av资源网| 久久99久久99精品免视看婷婷| 激情综合五月天| 成人午夜电影久久影院| 91在线无精精品入口| 欧美日韩中文精品| 精品第一国产综合精品aⅴ| 国产女人aaa级久久久级| 亚洲一区视频在线| 国产一区二区三区香蕉| 91亚洲永久精品| 欧美精品电影在线播放| 国产欧美视频在线观看| 亚洲一二三专区| 粉嫩av一区二区三区| 精品视频1区2区| 中文字幕亚洲一区二区va在线| 性做久久久久久| 99re成人精品视频| 久久久久国产精品麻豆ai换脸| 亚洲精品国产精品乱码不99| 国内精品伊人久久久久av影院| 欧美中文字幕亚洲一区二区va在线 | 一区二区三区四区蜜桃| 国产精品综合一区二区三区| 精品视频色一区| 亚洲少妇30p| 成人性色生活片免费看爆迷你毛片| 欧美精品在线视频| 亚洲第一综合色| 欧美最猛黑人xxxxx猛交| 亚洲码国产岛国毛片在线| 国产乱人伦精品一区二区在线观看 | 一区二区三区四区蜜桃| 欧美精品色综合| 国产精品嫩草99a| 国产成人超碰人人澡人人澡| 精品国产乱码久久久久久牛牛 | 一本久久a久久免费精品不卡| 2欧美一区二区三区在线观看视频| 日韩在线一区二区| 欧美精品99久久久**| 日精品一区二区| 欧美一区二区精品| 激情图片小说一区| xf在线a精品一区二区视频网站| 国产精品自拍av| 国产日产精品一区| 成人动漫视频在线| 亚洲制服丝袜av| 51久久夜色精品国产麻豆| 久久99精品久久久久久国产越南| 日韩一区二区三区在线视频| 国产精品综合视频| 日韩毛片高清在线播放| 欧美日韩一区二区三区高清| 麻豆免费精品视频| 国产欧美日韩久久| 欧美日韩一区二区在线观看| 国产一区二区三区日韩| 国产精品二区一区二区aⅴ污介绍| 日本韩国一区二区| 免费成人av在线播放| 中文字幕av资源一区| 欧美三区免费完整视频在线观看| 日韩av在线免费观看不卡| 欧美韩日一区二区三区| 在线不卡免费欧美| 成+人+亚洲+综合天堂| 日本大胆欧美人术艺术动态| 国产精品久久久久久妇女6080| 欧美日本乱大交xxxxx| 91丝袜美腿高跟国产极品老师 | 国产三级欧美三级日产三级99| 一本久久综合亚洲鲁鲁五月天| 激情六月婷婷久久| 日韩av中文字幕一区二区三区| 夜夜精品视频一区二区| 国产欧美日韩亚州综合 | 国产在线播放一区| 青草国产精品久久久久久| 亚洲激情自拍偷拍| 一区二区三区在线视频免费 | 99精品热视频| 国产精品456露脸| 国产一区二区在线看| 裸体一区二区三区| 日本成人在线电影网| 午夜精品久久久久久不卡8050| 一区二区免费看| 亚洲线精品一区二区三区八戒| 亚洲自拍偷拍九九九| 亚洲国产成人av网| 亚洲一线二线三线视频| 亚洲午夜一二三区视频| 亚洲激情男女视频| 亚洲国产精品影院| 五月激情综合色| 久久se精品一区精品二区| 精品无人码麻豆乱码1区2区| 国产成人免费视频精品含羞草妖精| 六月丁香婷婷久久| 国产91在线观看| 色综合久久88色综合天天| 欧美日韩你懂得| 精品国产99国产精品| 国产精品国产三级国产aⅴ入口| 亚洲人精品一区| 麻豆精品一区二区三区| 国产aⅴ精品一区二区三区色成熟| av色综合久久天堂av综合| 欧美精品粉嫩高潮一区二区| 精品国产伦理网| 亚洲午夜三级在线| 成人性生交大合| 在线播放日韩导航| 国产精品久99| 久久超碰97人人做人人爱| 91女人视频在线观看| 日韩午夜激情免费电影| 亚洲图片你懂的| 国产一区二区三区观看| 欧美午夜精品久久久久久超碰| 欧美电影免费提供在线观看| 亚洲日本在线天堂| 国产一区二区三区在线观看免费视频| 91电影在线观看| 国产精品久久国产精麻豆99网站| 日本sm残虐另类| 欧美日韩亚洲综合| 亚洲国产另类精品专区| av电影天堂一区二区在线观看| 精品国产91九色蝌蚪| 视频一区在线播放| 精品视频一区 二区 三区| 亚洲女女做受ⅹxx高潮| 丰满亚洲少妇av| 久久精品水蜜桃av综合天堂| 九九精品一区二区| 精品国产一区二区精华| 蜜桃在线一区二区三区| 精品久久久久一区二区国产| 日本在线播放一区二区三区| 欧美日韩在线一区二区| 亚洲国产精品人人做人人爽| 欧美三电影在线| 奇米影视一区二区三区小说| 9191精品国产综合久久久久久| 婷婷开心激情综合| 欧美一级免费观看| 免费成人在线网站| 久久久久久夜精品精品免费| 国产一本一道久久香蕉| 国产精品少妇自拍| 欧美综合一区二区三区| 午夜不卡av在线| 久久久三级国产网站| 大陆成人av片| 亚州成人在线电影| 国产亚洲精品aa午夜观看| 91亚洲精华国产精华精华液| 一级精品视频在线观看宜春院| 欧美色视频在线| 国产精品综合久久| 亚洲国产另类av| 久久精品一区二区三区不卡| 国产日产欧美一区| 激情欧美一区二区三区在线观看| 91麻豆精品国产91久久久使用方法 | 中文字幕欧美国产| 精品视频一区二区不卡|