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

📄 first.c

📁 自己学习时写的检测minigui的代码 希望可以帮助别人 我也是初学者
💻 C
字号:
#include "first.h"#include "first_Info.c"static int s_pre_x,s_pre_y,s_release_x,s_release_y; static int s_symbol;static int s_x,s_y;static HMENU fn_Createmenufigure(void){	HMENU figure_hmenu;	MENUITEMINFO figure_mii;	memset(&figure_mii,0,sizeof(MENUITEMINFO));	figure_mii.type 	= MFT_STRING;	figure_mii.id 		= 0;	figure_mii.typedata= (DWORD)"Figure";	figure_hmenu 		= CreatePopupMenu(&figure_mii);	memset(&figure_mii,0,sizeof(MENUITEMINFO));	figure_mii.type	= MFT_STRING;	figure_mii.state 	= 0;	figure_mii.id		= ID_LINE;	figure_mii.typedata= (DWORD)"Line";	InsertMenuItem(figure_hmenu,0,TRUE,&figure_mii);	memset(&figure_mii,0,sizeof(MENUITEMINFO));	figure_mii.type 	= MFT_STRING;	figure_mii.state 	= 0;	figure_mii.id 		= ID_ELLIPSE;	figure_mii.typedata= (DWORD)"Circle";	InsertMenuItem(figure_hmenu,1,TRUE,&figure_mii);	memset(&figure_mii,0,sizeof(MENUITEMINFO));	figure_mii.type 	= MFT_STRING;	figure_mii.state	= 0;	figure_mii.id 		= ID_TRIANGLE;	figure_mii.typedata= (DWORD)"";	InsertMenuItem(figure_hmenu,2,TRUE,&figure_mii);	memset(&figure_mii,0,sizeof(MENUITEMINFO));	figure_mii.type	= MFT_STRING;	figure_mii.state	= 0;	figure_mii.id 		= ID_RECTANGLE;	figure_mii.typedata= (DWORD)"Rectangle";	InsertMenuItem(figure_hmenu,3,TRUE,&figure_mii);	return figure_hmenu;	}static HMENU fn_CreatemenuInfo(void){	HMENU info_menu;	MENUITEMINFO info_mii;	memset(&info_mii,0,sizeof(MENUITEMINFO));	info_mii.type 	= MFT_STRING;	info_mii.state 	= 0;	info_mii.typedata = (DWORD)"NewInfo";	info_menu 	= CreatePopupMenu(&info_mii);	memset(&info_mii,0,sizeof(MENUITEMINFO));	info_mii.type 	= MFT_STRING;	info_mii.state	= 0;	info_mii.id	= ID_NEWINFO;	info_mii.typedata = (DWORD)"NewInfo";	InsertMenuItem(info_menu,0,TRUE,&info_mii);	memset(&info_mii,0,sizeof(MENUITEMINFO));	info_mii.type 	= MFT_STRING;	info_mii.state  = 0;	info_mii.id	= ID_DELINFO;	info_mii.typedata = (DWORD)"DelInfo";	InsertMenuItem(info_menu,1,TRUE,&info_mii);	memset(&info_mii,0,sizeof(MENUITEMINFO));	info_mii.type	= MFT_STRING;	info_mii.state	= 0;	info_mii.id 	=ID_SEARCHINFO;	info_mii.typedata = (DWORD)"SearchInfo";	InsertMenuItem(info_menu,2,TRUE,&info_mii);	return info_menu;}static HMENU fn_Createmenufileson(void){	HMENU filesonhmenu;	MENUITEMINFO filesonmii;			memset(&filesonmii,0,sizeof(MENUITEMINFO));	filesonmii.type 	= MFT_STRING;	filesonmii.id		= 0;	filesonmii.typedata	= (DWORD)"File";	filesonhmenu		= CreatePopupMenu(&filesonmii);		memset(&filesonmii,0,sizeof(MENUITEMINFO));	filesonmii.type		= MFT_STRING;	filesonmii.state	= 0;	filesonmii.id		= ID_NEW;	filesonmii.typedata 	= (DWORD)"New";	InsertMenuItem(filesonhmenu,0,TRUE,&filesonmii);	memset(&filesonmii,0,sizeof(MENUITEMINFO));	filesonmii.type		= MFT_STRING;	filesonmii.state	= 0;	filesonmii.id		= ID_EXIT;	filesonmii.typedata	= (DWORD)"Exit";	InsertMenuItem(filesonhmenu,1,TRUE,&filesonmii);	return filesonhmenu;}static HMENU fn_Createmenufile(void){	HMENU filehmenu;	MENUITEMINFO filemii;		filehmenu = CreateMenu();		memset (&filemii,0,sizeof(MENUITEMINFO));	filemii.type 		= MFT_STRING;	filemii.id 			= 100;	filemii.typedata 	= (DWORD)"File";	filemii.hsubmenu 	= fn_Createmenufileson();			InsertMenuItem(filehmenu,0,TRUE,&filemii);	memset(&filemii,0,sizeof(MENUITEMINFO));	filemii.type		= MFT_STRING;	filemii.id			= 150;	filemii.typedata	= (DWORD)"Figure";	filemii.hsubmenu	= fn_Createmenufigure();	InsertMenuItem(filehmenu,1,TRUE,&filemii);	memset(&filemii,0,sizeof(MENUITEMINFO));	filemii.type	= MFT_STRING;	filemii.id		= 160;	filemii.typedata	= (DWORD)"Info";	filemii.hsubmenu	= fn_CreatemenuInfo();	InsertMenuItem(filehmenu,2,TRUE,&filemii);			return 	filehmenu;}static int fn_FirstWinProc(HWND hWnd, int message,WPARAM wParam,LPARAM lParam){	HDC hdc;	static BOOL s_bdraw;	int rx,ry;	int x = LOWORD(lParam);	int y = HIWORD(lParam);	switch (message)	{			case MSG_COMMAND:		printf("menu___\n");		if (LOWORD(wParam) == ID_EXIT)		{			printf("You are using the Exit menu !\n");			DestroyAllControls(hWnd);			DestroyMainWindow (hWnd);			PostQuitMessage(hWnd);		}		else if(LOWORD(wParam) == ID_NEW)		{			printf("You are using the New menu !\n");			 		}		else if (LOWORD(wParam) == ID_LINE)		{			s_symbol = 0;		}		else if(LOWORD(wParam) == ID_ELLIPSE)		{			s_symbol = 1;		}		else if (LOWORD(wParam) == ID_TRIANGLE)		{			s_symbol = 2;		}		else if (LOWORD(wParam) == ID_RECTANGLE)		{			s_symbol = 3;		}		else if (LOWORD(wParam) == ID_NEWINFO)		{			InitDialog (hWnd);			printf ("\nOK DIOG ! \n");			}	break;		case MSG_PAINT:		hdc = BeginPaint (hWnd);		TextOut(hdc,20,20,"This Program is OK--Success!");		EndPaint(hWnd,hdc);		return 0;	case MSG_LBUTTONDOWN:		SetCapture(hWnd);		s_bdraw = TRUE;				s_pre_x = LOWORD(lParam);		s_pre_y = HIWORD(lParam);		s_x = s_pre_x;		s_y = s_pre_y;			break;	case MSG_LBUTTONUP:/* Only this time the final circle (or ellipse) finally defined*/		s_bdraw = FALSE;						ReleaseCapture();		if(s_symbol == 1)		{			ScreenToClient(hWnd,&s_release_x,&s_release_y); /*exchange the x,y to the hWnd*/			hdc = GetClientDC(hWnd); /*get a client DC of the hWnd ,returns the handle of the DC.Should release after use */			SetPenColor(hdc,PIXEL_green); /*R,G,B color*/						rx = ABS(s_release_x - s_x);/*#define ABS  (  x    )     (((x)<0) ? -(x) : (x)) */			ry = ABS(s_release_y - s_y);						if (ABS(rx - ry) <= 8)		/*if  ABS(rx - ry) <= 8  we draw the circle not the ellipse*/				Circle(hdc,s_x,s_y,rx);						else							Ellipse(hdc,s_x,s_y,rx,ry);			ReleaseDC(hdc);		}		break;		case MSG_MOUSEMOVE:					switch (s_symbol)		{		case 0:		if(s_bdraw)		{			ScreenToClient(hWnd,&x,&y); /*exchange the x,y to the hWnd*/			hdc = GetClientDC(hWnd); /*get a client DC of the hWnd ,returns the handle of the DC.Should release after use */			SetPenColor(hdc,PIXEL_red); /*R,G,B color*/			MoveTo (hdc,s_pre_x,s_pre_y);			LineTo(hdc,x,y);			ReleaseDC(hdc);			s_pre_x = x;			s_pre_y = y;		}			break;		case 1:			if (s_bdraw)			{				s_release_x = LOWORD(lParam);				s_release_y = HIWORD(lParam);							}			break;		case 2:			SetPenColor(hdc,PIXEL_blue); /*R,G,B color*/			break;		case 3:			SetPenColor(hdc,PIXEL_yellow); /*R,G,B color*/			break;					}				break;		case MSG_RBUTTONDOWN:		printf("Use the right button to clear up the screen.\n");		InvalidateRect(hWnd,NULL,TRUE);		break;		case MSG_CLOSE:		DestroyAllControls(hWnd);		DestroyMainWindow (hWnd);		PostQuitMessage (hWnd);		return 0;        case MSG_MINIMIZE:        	break;			case MSG_MAXIMIZE:			break;	}	return DefaultMainWinProc(hWnd,message,wParam,lParam);}int MiniGUIMain (int argc,const char* argv[]){	MAINWINCREATE CreateInfo;	HWND	hMainWnd;	MSG	Msg;		#ifdef LITE_VERSION	SetDesktopRect(0,0,800,600);#endif	CreateInfo.dwStyle=WS_SYSMENU |WS_THICKFRAME | WS_VISIBLE | WS_CAPTION | WS_VSCROLL | WS_HSCROLL| WS_MINIMIZEBOX |WS_MAXIMIZEBOX;	CreateInfo.spCaption = "Program of test for MiniGUI:";	CreateInfo.dwExStyle = WS_EX_NONE;	CreateInfo.hMenu = fn_Createmenufile();	CreateInfo.hCursor = GetSystemCursor(0);	CreateInfo.hIcon = 0;	CreateInfo.MainWindowProc = fn_FirstWinProc;	CreateInfo.lx = 0;	CreateInfo.ty = 0;	CreateInfo.rx = 800;	CreateInfo.by = 600;	CreateInfo.iBkColor = COLOR_yellow;	CreateInfo.dwAddData = 0;	CreateInfo.hHosting = HWND_DESKTOP;		hMainWnd = CreateMainWindow (&CreateInfo);		if (hMainWnd == HWND_INVALID)	{		return -1;	}		ShowWindow (hMainWnd, SW_SHOWNORMAL);		while (GetMessage (&Msg,hMainWnd))	{		TranslateMessage(&Msg);		DispatchMessage(&Msg);	}		MainWindowThreadCleanup (hMainWnd);		return 0;}       #ifndef  LITE_VERSION#include <minigui/dti.c>#endif 

⌨️ 快捷键说明

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