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

📄 main.c

📁 Seekfor WinOS的GUI图形界面程序
💻 C
字号:
#include "gui.h"
#include <dos.h>
#include <graphics.h>

HWND hWnd1,hWnd2,hWnd3,hWnd4,hWnd5;

#define Y RED
DT_CODE COLORREF man[]={16,16,5,
			0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
			0,0,Y,Y,0,0,Y,Y,Y,Y,Y,0,0,Y,Y,0,
			0,0,Y,Y,Y,Y,0,0,0,0,0,Y,Y,Y,Y,0,
			0,0,0,0,Y,0,0,0,0,0,0,0,Y,0,0,0,
			0,0,0,Y,0,0,Y,Y,0,Y,Y,0,0,Y,0,0,
			0,0,0,Y,0,0,0,0,0,0,0,0,0,Y,0,0,
			0,0,0,Y,0,0,0,Y,Y,Y,0,0,0,Y,0,0,
			0,0,0,0,Y,0,0,0,Y,0,0,0,Y,0,0,0,
			0,0,0,0,0,Y,Y,0,0,0,Y,Y,0,0,0,0,
			0,0,0,Y,Y,0,0,Y,Y,Y,0,0,Y,0,0,0,
			0,0,Y,0,0,0,0,0,0,0,0,0,0,Y,0,0,
			0,Y,0,0,Y,Y,0,0,0,0,Y,Y,0,0,Y,0,
			0,Y,0,0,Y,Y,Y,0,0,Y,Y,Y,0,0,Y,0,
			0,Y,0,0,0,0,Y,0,0,Y,Y,0,0,0,Y,0,
			0,0,Y,0,0,0,0,0,0,0,0,0,0,0,Y,0,
			0,0,0,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,0,0
			};

BOOL bAuto1=0,bAuto2=0;

void Init_Mouse()
{
	_AX=2;
	_asm int 0x33;

}
POINT GetMousePoint(DT_CHAR *status)
{
	POINT pos;
	_AX=3;
	_asm int 0x33;
	*status=_BX;
	pos.x=_CX;
	pos.y=_DX;
	return pos;
}

void SetMousePos(POINT pos)
{
	_CX=pos.x;
	_DX=pos.y;
	_AX=4;
	_asm int 0x33;
}


void ProcessMouse()
{
	static POINT Pos={0,0};
	static DT_CHAR oldstatus=0;
	DT_CHAR status=0;
	POINT pos=GetMousePoint(&status);
	if(pos.x!=Pos.x||pos.y!=Pos.y)
		PostMessage(GetDesktopWindow(),WM_MOUSEMOVE,pos.x,pos.y);
	if(status&0x01) /*左键按下*/
	{
		if((oldstatus&0x01)==0x00)
			PostMessage(GetDesktopWindow(),WM_LBUTTONDOWN,pos.x,pos.y);
		oldstatus=status;
	}
	else  if((status&0x01)==0x00)
	{
		if(oldstatus&0x01)
			PostMessage(GetDesktopWindow(),WM_LBUTTONUP,pos.x,pos.y);
		oldstatus=status;
	}
	else if(status&0x02) /*右键按下*/
	{
		if((oldstatus&0x02)==0x00)
			PostMessage(GetDesktopWindow(),WM_RBUTTONDOWN,pos.x,pos.y);
		oldstatus=status;
	}
	else if(status&0x02==0x00)
	{
		if(oldstatus&0x02)
			PostMessage(GetDesktopWindow(),WM_RBUTTONUP,pos.x,pos.y);
		oldstatus=status;
	}
	Pos=pos;
}


DT_CHAR MainWndProc(HWND hWnd,DT_CHAR msg,WPARAM wParam,LPARAM lParam)
{
	PAINTSTRUCT ps;
	char buff[20];
	POINT pos;
	switch(msg)
	{
		case WM_KEYDOWN:
			if(wParam==VK_F5) RedrawWindow(GetDesktopWindow());
			break;
		case WM_COMMAND:
			switch(LOWORD(wParam))
			{
				case 10:
					SetWindowText(hWnd,"OK,那小子已经被斩首示众了!");
					break;
				case 20:
					SetWindowText(hWnd,"OK,那小子已经拖出去喂狗了!");
					break;
				case 30:
					SetWindowText(hWnd,"OK,那小子已经到了18层地狱了!");
					break;
				case 40:
					SetWindowText(hWnd,"呵呵,原来您是个爱国者,景仰");
					break;
				case 50:
					SetWindowText(hWnd,"我靠,你TMD是个汉奸啊!");
					break;
				case 60:
					SetWindowText(hWnd,"XP,XP,插屁插屁");
					break;
				case 70:
					SetWindowText(hWnd,"愤怒青年是中华之希望");
					break;
				case 80:
					switch(HIWORD(wParam))
					{
						case EN_CHANGE:
							GetWindowText((HWND)lParam,buff,20);
							SetWindowText(hWnd,buff);
							break;
					}

					break;
				case 110:
					bAuto1=!bAuto1;
					break;
				case 120:
					bAuto2=!bAuto2;
					break;
				case 130:
					return ExitWindows(0,0);
			}

			return 1;
	}
	return DefWindowProc(hWnd,msg,wParam,lParam);
}


void key()
{
	int i;
	static unsigned long item=0;
	static DT_INT key=0;
	char buff[10];
	if(item++>=0x7fff)
	{
		item=0;
		if(bAuto1)
		{
			SendMessage(hWnd2,PBM_STEPIT,0,0);
			i=SendMessage(hWnd2,PBM_GETPOS,0,0);
			if(i>=100)
			PostMessage(hWnd2,PBM_SETPOS,0,0);
		}
		if(bAuto2)
		{
			i=SendMessage(hWnd3,TBM_GETPOS,0,0)+1;
			if(i>=100) i=0;
			PostMessage(hWnd3,TBM_SETPOS,1,i);
		}
	}

	if(!bioskey(1))
	{
		if(key)
			PostMessage(GetActiveWindow(),WM_KEYUP,key,0);
		key=0;
		return ;
	}
	i=bioskey(0);
	if(i&0xff) i&=0xff;
	else
	{
		i=VK_BASE+(i>>8);
	}
	key=i;
	PostMessage(GetActiveWindow(),WM_KEYDOWN,key,0);

}
/*
void initgraph()
{
	 _AX=0x13;
	geninterrupt(0x10);
 }

void closegraph()
{
	 _AX=0x3;
	 geninterrupt(0x10);
}

void putpixel(int x,int y,int color)
{
	if(x>=320||y>=240) return;
	 pokeb(0xa000,y*320+x,color);
}

char getpixel(int x,int y)
{
  return peekb(0xa000,y*320+x);
}
*/
void putpoint(PIXEL *pl)
{
	putpixel(pl->x,pl->y,pl->color);
}
void getpoint(PIXEL *pl)
{
	pl->color=getpixel(pl->x,pl->y);
}


void Class_Init()
{
	WNDCLASS wc;
	wc.lpfnWndProc=(WNDPROC)MainWndProc;
	wc.lpszClassName="MCU51";
#if ICON_EN==1
	wc.hIcon=(HANDLE)LoadIcon(0,man);
#endif
	RegisterClass(&wc);
}

void init_graphics()
{
	int driver=VGA,mode=VGAHI;
	registerbgidriver(EGAVGA_driver);
	initgraph(&driver,&mode,"");
}
unsigned char buffer[1024*15];
void main()
{
	DT_CHAR i=1,j;
	char buff[20];
	init_graphics();
	Init_Mouse();
	GUI_Init(640,480,buffer,1024*15,putpoint,getpoint,(lpfnCLRSCR)NULL);
	Class_Init();
	hWnd1=CreateWindow("MCU51","假如小日本战败...",WS_OVERLAPPEDWINDOW,150,50,320,360,NULL,0,0);
	CreateWindow("GROUPBOX","如何处理小犬(复选框Demo)",WS_VISIBLE,20,2,16*16,100,hWnd1,0,0);
	CreateWindow("CHECKBOX","斩首示众",WS_VISIBLE,30,25,8*16,16,hWnd1,(HMENU)10,0);
	CreateWindow("CHECKBOX","拖出去喂狗",WS_VISIBLE,30,35+16,10*16,16,hWnd1,(HMENU)20,0);
	CreateWindow("CHECKBOX","打入18层地狱",WS_VISIBLE,30,45+16+16,12*16,16,hWnd1,(HMENU)30,0);
	CreateWindow("GROUPBOX","选择您的身份(单选框Demo)",WS_VISIBLE,20,110,16*16,80,hWnd1,(HMENU)0,0);
	CreateWindow("RADIOBOX","爱国人士",WS_VISIBLE,30,130,8*16,16,hWnd1,(HMENU)40,0);
	CreateWindow("RADIOBOX","中华汉奸",WS_VISIBLE,30,140+16,8*16,16,hWnd1,(HMENU)50,(LPVOID)0);
	CreateWindow("RADIOBOX","中华XP",WS_VISIBLE,160,130,8*16,160,hWnd1,(HMENU)60,(LPVOID)0);
	CreateWindow("RADIOBOX","愤怒青年",WS_VISIBLE,160,140+16,8*16,32,hWnd1,(HMENU)70,(LPVOID)0);
	hWnd2=CreateWindow("PROGRESSBAR","",WS_VISIBLE,10,200,280,8,hWnd1,(HMENU)90,(LPVOID)10);
	hWnd3=CreateWindow("HTRACKBAR","",WS_VISIBLE,10,200+16,280,22,hWnd1,(HMENU)100,(LPVOID)10);
	CreateWindow("EDIT","编辑控件Demo",WS_VISIBLE,10,230+16,280,20,hWnd1,(HMENU)80,(LPVOID)50);
	//PostMessage(hWnd4,EM_SETPASSWORDCHAR,'*',0);
	CreateWindow("CHECKBOX","进程条自动滚动(进程条Demo)",WS_VISIBLE,10,270,17*16,16,hWnd1,(HMENU)110,0);
	CreateWindow("CHECKBOX","滚动条自动滚动(滚动条demo)",WS_VISIBLE,10,290,17*16,16,hWnd1,(HMENU)120,0);

	CreateWindow("PUSHBUTTON","退出程序(普通按钮demo)",WS_VISIBLE,40,310,14*16,32,hWnd1,(HMENU)130,0);
	CheckRadioButton(hWnd1,40,60,40);
	while(i)
	{
		ProcessMouse();
		key();
		i=GUI_Message();
	}
	GUI_Quit();
	closegraph();
}

⌨️ 快捷键说明

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