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