EMWin窗口重绘(WM_Redraw.c)

实例:WM_Redraw.c
效果:
EMWin窗口重绘(WM_Redraw.c) EMWin窗口重绘(WM_Redraw.c)


#include "GUI.h"
#include "WM.h"



static void _cbBkWindow(WM_MESSAGE* pMsg) {
  switch (pMsg->MsgId) {
  case WM_PAINT:
      GUI_ClearRect(0, 50, 319, 239);
  default:
      WM_DefaultProc(pMsg);
  }
}


static void _cbWindow(WM_MESSAGE* pMsg) {
  GUI_RECT Rect;

  switch (pMsg->MsgId) {
  case WM_PAINT:
      WM_GetInsideRect(&Rect);
      GUI_SetBkColor(GUI_RED);
      GUI_SetColor(GUI_YELLOW);
      GUI_ClearRectEx(&Rect);
      GUI_DrawRectEx(&Rect);
      GUI_SetColor(GUI_BLACK);
      GUI_SetFont(&GUI_Font8x16);
      GUI_DispStringHCenterAt("Foreground window", 75, 40);
      break;
  default:
      WM_DefaultProc(pMsg);
  }
}


static void _MoveWindow(const char* pText) {
  WM_HWIN hWnd;
  int        i;

  //
  // Create foreground window
  //
  hWnd = WM_CreateWindow(10, 50, 150, 100, WM_CF_SHOW, _cbWindow, 0);
  GUI_Delay(500);
  //
  // Move foreground window
  //
  for (i = 0; i < 40; i++) {
      WM_MoveWindow(hWnd, 2, 2);
      GUI_Delay(10);
  }
  //
  // Show text before deleting window if we have one
  //
  if (pText) {
      GUI_DispStringAt(pText, 5, 50);
      GUI_Delay(2500);
  }
  //
  // Delete foreground window
  //
  WM_DeleteWindow(hWnd);
  WM_Invalidate(WM_HBKWIN);
  GUI_Exec();
}


static void _DemoRedraw(void) {
  WM_CALLBACK * _cbOldBk;

  GUI_SetBkColor(GUI_BLACK);
  GUI_Clear();
  GUI_SetColor(GUI_WHITE);
  GUI_SetFont(&GUI_Font24_ASCII);
  GUI_DispStringHCenterAt("WM_Redraw - Sample", 160, 5);
  GUI_SetFont(&GUI_Font8x16);
  while(1) {
      //
      // Move a window over background
      //
      _MoveWindow("Background has not been redrawn");
      //
      // Clear background
      //
      GUI_ClearRect(0, 50, 319, 239);
      GUI_Delay(1000);
      //
      // Set callback for background window
      //
      _cbOldBk = WM_SetCallback(WM_HBKWIN, _cbBkWindow);
      //
      // Move a window over background
      //
      _MoveWindow("Background has been redrawn");
      //
      // Delete callback for Background window
      //
      WM_SetCallback(WM_HBKWIN, _cbOldBk);
  }
}



void MainTask(void) {
  GUI_Init();
  _DemoRedraw();
}





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值