📄 messageb.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 + -