⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messageb.c

📁 在smartarmm2200上显示波形实现暂停退出的功能
💻 C
字号:
#include <string.h>#include "MiniGUI_config.h"#include "common.h"#include "minigui.h"#include "gdi.h"#include "window.h"#include "control.h"#include <stdio.h>#include <stdlib.h>#define IDC_BUTTON1               102/* 主窗口起始位置及大小 */#define  MWINDOW_LX	0       /* 窗口左边框的x值 */#define  MWINDOW_TY	0       /* 窗口上边框的y值 */#define  MWINDOW_RX	240     /* 窗口右边框的x值 */#define  MWINDOW_BY	256     /* 窗口下边框的y值 */extern int err;extern int Adc_Rw_Sem;extern int x;extern int y;int  x0=2, y0=2;        // 直线第一点坐标变量int  x1=0, y1=0;    // 直线第二点坐标变量 HWND hMainWnd; HWND hMainWnd1; //采样数据的二级界面******************************************************************//HWND hMainWnd1 = HWND_INVALID;static int GetSamplingDataProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam)  //采样心电数据的处理消息{   HDC  hdc;  switch (message) {      case MSG_PAINT:            hdc = BeginPaint(hWnd);                                  x1 = x0+2;            y1 = x;                                                                          SetPenColor(hdc, PIXEL_green);                MoveTo(hdc, x0, y0);        // 移动hdc当前位置到直线第一点处              if(x0==0)                {                       SetBrushColor(hdc, PIXEL_black);                    FillBox(hdc,0,0,240,256);                }              else                {                    LineTo(hdc,x1,y1);  // 画直线到直线第二点                 }                      		  	  	if(x0>=240)                  //横向的点,在MASSAGE文件中X,Y代表的意义反了,注意!	  	  	 { x0=0;}                     //不停的横向显示,到头后再从头开始显示            else            {x0=x0+2;}            y0=y1;                        EndPaint(hWnd, hdc);                        OSSemPost(Adc_Rw_Sem);                                     break;               case MSG_KEYDOWN:         //!!!考虑在此处,挂起划线任务,释放所用资源!!!           OSTaskSuspend(6);           OSTaskSuspend(4);             //         SetBrushColor(hdc, PIXEL_black);//刷新界面  //         FillBox(hdc,0,0,240,256);                          DestroyAllControls (hWnd);           DestroyMainWindow (hWnd);           MainWindowCleanup (hWnd);          // SendMessage (hWnd, MSG_CLOSE, 0, 0);             break;                   case MSG_LBUTTONDOWN:                             break;                                  default:           break;         case MSG_DESTROY:           DestroyAllControls (hWnd);           hMainWnd1 = HWND_INVALID;           return 0;      case MSG_CLOSE:           DestroyAllControls (hWnd);           DestroyMainWindow (hWnd);           MainWindowCleanup (hWnd);           return 0;            }    return DefaultMainWinProc (hWnd, message, wParam, lParam);}                              int InitCreateInfoSampling(void){       MAINWINCREATE  window_info_sampling;    window_info_sampling.dwStyle = WS_VISIBLE ;    window_info_sampling.dwExStyle = WS_EX_NONE;    window_info_sampling.spCaption = "采样心电波形";            window_info_sampling.hMenu = 0;          window_info_sampling.hCursor = GetSystemCursor(0);    window_info_sampling.hIcon = 0;    window_info_sampling.MainWindowProc = GetSamplingDataProc;    window_info_sampling.lx = 0;    window_info_sampling.ty = 0;    window_info_sampling.rx = MWINDOW_RX;    window_info_sampling.by = MWINDOW_BY;    window_info_sampling.iBkColor = COLOR_black;    window_info_sampling.dwAddData = 0;    window_info_sampling.hHosting = hMainWnd;         hMainWnd1 = CreateMainWindow (&window_info_sampling);    if (hMainWnd1 == HWND_INVALID)		return(0);        else  return(1);}void GetSamplingData (){  InitCreateInfoSampling(); }//******************************************************************************static int FirstWinProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){   HDC hdc;    switch (message) {       case MSG_CREATE:                                               CreateWindow (CTRL_BUTTON,                        "波形显示",                        WS_CHILD | BS_PUSHBUTTON | WS_VISIBLE,                        IDC_BUTTON1,                        30, 50, 75, 40, hWnd, 0);             break;                case MSG_COMMAND:      {          int id   = LOWORD(wParam);          int code = HIWORD(wParam);          switch (id)          {                                        case IDC_BUTTON1:                                   printf ("opendisk: ID: %d, Code: %x\n", id, code);              GetSamplingData ();                               OSTaskResume(6);   //解除画图任务挂起状态!              OSTaskResume(4);                            x0=2;           //再进入后从头开始画!              y0=y1;                            break;                                          default:              break;          }          break;      }        break;      case MSG_CLOSE:           DestroyMainWindow (hWnd);           PostQuitMessage (hWnd);           break;   }   return DefaultMainWinProc(hWnd, message, wParam, lParam);}int InitMainWindow(void){   MAINWINCREATE  window_info;    window_info.dwStyle = WS_VISIBLE | WS_BORDER | WS_CAPTION;    window_info.dwExStyle = WS_EX_NONE;    window_info.spCaption = "心电测量仪主界面";            window_info.hMenu = 0;          window_info.hCursor = GetSystemCursor(0);    window_info.hIcon = 0;    window_info.MainWindowProc = FirstWinProc;    window_info.lx = 0;    window_info.ty = 0;    window_info.rx = 240;    window_info.by = 320;    window_info.iBkColor = COLOR_lightwhite;    window_info.dwAddData = 0;    window_info.hHosting = HWND_DESKTOP;         hMainWnd = CreateMainWindow (&window_info);    if (hMainWnd == HWND_INVALID) return(0);      else  return(1);}int MiniGUIMain (int argc, const char* argv[]){   MSG Msg;  #ifdef _LITE_VERSION   SetDesktopRect(0, 0, 1024, 768);#endif         srand(3721);    // 初始化随机总机         InitMainWindow();   ShowWindow(hMainWnd, SW_SHOWNORMAL);   printf ("The main window showed.\n");   while (GetMessage(&Msg, hMainWnd)) {       TranslateMessage(&Msg);       DispatchMessage(&Msg);   }   MainWindowThreadCleanup (hMainWnd);   return 0;}#ifndef _LITE_VERSION	#include "dti.c"#endif  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -