📄 gwt.h
字号:
//Defines the entry point for compiling the win 32 console application.
//VC++ Header file.By 追风逐月 2010-12-14.
//GraphicsWhenTurn.Headerfile
/*windows窗口创建该复制的部分
HWND winHwnd;
HDC winHdc;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int InitWindowStyle(WNDCLASS *wclass,HINSTANCE hInstance)
{
wclass->style = CS_HREDRAW|CS_VREDRAW;
wclass->lpfnWndProc=WndProc;
wclass->cbClsExtra=0;
wclass->cbWndExtra=0;
wclass->hInstance=hInstance;
wclass->hIcon=LoadIcon(NULL,IDI_APPLICATION);
wclass->hCursor=LoadCursor(NULL,IDC_ARROW);
wclass->hbrBackground=CreateSolidBrush(0xffffff);
wclass->lpszMenuName=NULL;
wclass->lpszClassName=TEXT("MainClass");
return RegisterClass(wclass);
}
void InitWindow(HINSTANCE hInstance,int nCmdShow)
{
WNDCLASS wndClass;
if(!InitWindowStyle(&wndClass,hInstance))
{
MessageBox(NULL,"窗口注册错误!","error提示",MB_OK);
PostQuitMessage(0);
}
winHwnd=CreateWindow(TEXT("MainClass"),
TEXT("By_Pop"),//窗口名称
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
winHdc=GetDC(winHwnd);
ShowWindow(winHwnd,nCmdShow);
UpdateWindow(winHwnd);
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
InitWindow(hInstance,nCmdShow);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch(message)
{
case WM_CREATE:
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HBRUSH hOldBrush;
BeginPaint(hwnd,&ps);
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
*/
#ifndef _GWT_H_
#define _GWT_H_
#include "pex.h"//Has been included windows.h math.h tchar.h
#define GW_NOFRAME -1
#define GW_NORMAL 0
#define GW_FULL 1
#define GW_ELLIPIS 2
#define GW_CIRCLE 3
//窗口系统函数
void GViewInit(int mode=0,int w=640,int h=480,int posx=CW_USEDEFAULT,int posy=CW_USEDEFAULT);
void GViewDestroy();
int LcdWid();
int LcdHgt();
//模拟鼠标单击函数
void SimulateMouseLButtonDownUp(HWND hwnd,int mousex,int mousey);
void SimulateKBHit(HWND hwnd,WPARAM wParam,LPARAM lParam);
//普通数据处理函数
void ShowIntegerVariable(int x,int y,int integer,PIMAGE img=NULL);
void ShowIntegerWithString(int x,int y,LPCTSTR helpstr,int integer,PIMAGE img=NULL);
void ShowIntegerWithString(int x,int y,int integer1,LPCTSTR helpstr,int integer2,PIMAGE img=NULL);
int Msg(LPCTSTR msg,int mode=-1,UINT uType=MB_OK);//-1debug界面 1提示界面 其他自定义界面
//图象数据处理函数
int GetMidPos(int destL,int srcL);
//判断两张图片是否碰撞 是返回true 否则false
BOOL BeCrashed(int src1x,int src1y,int src1w,int src1h,int src2x,int src2y,int src2w,int src2h);
BOOL WillCrashedinRow(int src1x,int src1w,int src2x,int src2w);
BOOL WillCrashedinLine(int src1y,int src1h,int src2y,int src2h);
void GRectangle(int x,int y,int w,int h,PIMAGE img=NULL);
//图象处理函数
//将图像转换为lvl层的色阶(默认为灰色)图像
void SetImageToGraydation(PIMAGE src=NULL,int lvl=4,PIMAGE dest=NULL,int sx=0,int sy=0,int sw=0,int sh=0);
//仅过滤src2的关键色后粘贴显示在屏幕上,src1为背景。不修改src1,src2
void GImageShowTransparent(int picx,int picy,PIMAGE src1,PIMAGE src2,int putsrc2tox,int putsrc2toy,COLORREF crTransparent=0XFFFFFF,int src2x=0,int src2y=0,int src2w=0,int src2h=0);
//融合动画显示在屏幕上。不修改src1,src2
void GImageShowAlphaTurned(PIMAGE src1,int src1x,int src1y,PIMAGE src2,int src2tosrc1x,int src2tosrc1y,unsigned char alpha,int src2x,int src2y,int src2w,int src2h);
//自动将图片适应屏幕大小,注意,img必须足够屏幕大小
void GImageSelfAdaptWindow(PIMAGE img);
//自动将图片适应屏幕大小,并返回。返回值赋给自己也可以
IMAGE GImageAdaptWindow(PIMAGE img);
//窗口截图放入img中
void GImagePrivateShot(PIMAGE img);
//颜色滤镜函数:整体更改外表颜色
void GBgColorFilter(PIMAGE dest,int putsrctodestx,int putsrctodesty,PIMAGE src,COLORREF keycolor,int srcx=0,int srcy=0,int srcw=0,int srch=0);
//旋转图像
void RotateImage(float tarc,IMAGE *pimgdest,int destx,int desty,IMAGE *pimgsrc,int srcx,int srcy,int srcw,int srch);
int LcdWid(){return GetSystemMetrics(SM_CXSCREEN);}
int LcdHgt(){return GetSystemMetrics(SM_CYSCREEN);}
void GViewInit(int mode,int w,int h,int posx,int posy)
{
switch(mode)
{
case 1:
{
setinitmode(1,0,0);
initgraph(-1,-1);
}
break;
case 0:
{
setinitmode(0,posx,posy);
initgraph(w,h);
}
break;
case -1:
{
setinitmode(1,posx,posy);
initgraph(w,h);
}
break;
case 2:
{
setinitmode(0,posx,posy);
initgraph(w,h);
int cx = GetSystemMetrics(SM_CXFIXEDFRAME);
int cy = GetSystemMetrics(SM_CYFIXEDFRAME) + GetSystemMetrics(SM_CYCAPTION);
SetWindowRgn(GetHWnd(), CreateEllipticRgn(cx,cy,cx+w,cy+h), true);
}
break;
case 3:
{
setinitmode(0,posx,posy);
initgraph(w,h);
int cx = GetSystemMetrics(SM_CXFIXEDFRAME);
int cy = GetSystemMetrics(SM_CYFIXEDFRAME) + GetSystemMetrics(SM_CYCAPTION);
SetWindowRgn(GetHWnd(), CreateEllipticRgn(cx,cy,cx+2*w,cy+2*w), true);
}
break;
default:
{
MessageBox(GetHWnd(),"Sorry,the graph cannot be initted with an unreceptable mode","error",MB_OK);
}
break;
}
SetWindowText(GetHWnd(),"PoweredByWhx QQ 997205816");
}
void GViewDestroy()
{
closegraph();
}
void RotateImage(float tarc,IMAGE *pimgdest,int destx,int desty,IMAGE *pimgsrc,int srcx,int srcy,int srcw,int srch)
{
float centerx=(float)(srcw+srcx+1)/2;
float centery=(float)(srch+srcy+1)/2;
for(int nowy=srcy;nowy<=srch;nowy++)
{
for(int nowx=srcx;nowx<=srcw;nowx++)
{
putpixel(
((nowx-centerx)*cos(tarc)-(nowy-centery)*sin(tarc)+centerx),
((nowx-centerx)*sin(tarc)+(nowy-centery)*cos(tarc)+centery),
getpixel(nowx,nowy,pimgsrc),
pimgdest
);
}
}
}
void ShowIntegerVariable(int x,int y,int integer,PIMAGE img)
{
if(integer>2147483647||integer<-2147483647)
{
MessageBox(GetHWnd(),"ShowIntegerVariable( .. , .. , 传入参数过大或过小)","error!-GWT DEBUG",MB_OK);
}
else
{
char cbuf[10];
wsprintf(cbuf,"%d",integer);
outtextxy(x,y,cbuf,img);
}
}
int GetMidPos(int destL,int srcL)
{
if(destL>srcL)
return (destL-srcL)/2;
else
return 0;
}
int Msg(LPCTSTR msg,int mode,UINT uType)
{
if(mode==-1) return MessageBox(GetHWnd(),msg,"error!-GWT DEBUG",MB_OK|MB_ICONWARNING);
else if(mode==1) return MessageBox(GetHWnd(),msg,"提示: -追风逐月",uType);
else return MessageBox(GetHWnd(),msg,"提示:",uType);
}
void GImageShowTransparent(int picx,int picy,PIMAGE src1,PIMAGE src2,int putsrc2tox,int putsrc2toy,COLORREF crTransparent,int src2x,int src2y,int src2w,int src2h)
{
IMAGE imgbuf;
imgbuf.getimage(0,0,getwidth(),getheight());
putimage(&imgbuf,0,0,src1);
putimage_transparent(&imgbuf,src2,putsrc2tox,putsrc2toy,crTransparent,src2x,src2y,src2w,src2h);
putimage(picx,picy,&imgbuf);
}
void GImageSelfAdaptWindow(PIMAGE img)
{
if(getwidth(img)>getwidth()&&getheight(img)>getheight())
putimage(img,0,0,getwidth(),getheight(),img,0,0,getwidth(img),getheight(img));
else
Msg("GImageSelfAdaptWindow(输入的img比窗口小,无法自适应,请使用GImageAdaptWindow)",-1);
}
IMAGE GImageAdaptWindow(PIMAGE img)
{
IMAGE imgbuf;
imgbuf.getimage(0,0,getwidth(),getheight());
putimage(&imgbuf,0,0,getwidth(),getheight(),img,0,0,getwidth(img),getheight(img));
return imgbuf;
}
inline COLORREF alphacol(COLORREF a, COLORREF b, COLORREF alpha)
{
COLORREF crb = (a & 0xFF00FF) * (0xFF-alpha) + (b & 0xFF00FF) * (alpha);
COLORREF cg = (a & 0xFF00) * (0xFF-alpha) + (b & 0xFF00) * (alpha);
return ((crb & 0xFF00FF00) | (cg & 0xFF0000)) >> 8;
}
/*
void AlphaPutImage(int w, int h, IMAGE *pimg, IMAGE *pimg1, IMAGE *pimg2, COLORREF alpha)
{
int len = w * h;
PDWORD p = pimg->getbuffer(), p1 = pimg1->getbuffer(), p2 = pimg2->getbuffer();
for (PDWORD ped=p+len; p<ped; )
{
COLORREF a = *p1++;
COLORREF b = *p2++;
*p++ = alphacol(a, b, alpha);
}
}*/
void GImageShowAlphaTurned(PIMAGE src1,int src1x,int src1y,PIMAGE src2,int src2tosrc1x,int src2tosrc1y,unsigned char alpha,int src2x,int src2y,int src2w,int src2h)
{
IMAGE buf1;
buf1.getimage(0,0,getwidth(src1),getheight(src1));
putimage(&buf1,0,0,src1);
putimage_alphablend(&buf1,src2,src2tosrc1x,src2tosrc1y,alpha,src2x,src2y,src2w,src2h);
putimage(src1x,src1y,&buf1);
}
void GImagePrivateShot(PIMAGE img)
{
int w=getwidth(),h=getheight();
for(int y=0;y<h;y++)for(int x=0;x<w;x++)
putpixel(x,y,getpixel(x,y),img);
}
void GBgColorFilter(PIMAGE dest,int putsrctodestx,int putsrctodesty,PIMAGE src,COLORREF keycolor,int srcx,int srcy,int srcw,int srch)
{
float h,s,v,hbuf;
if(!srcw)srcw=getwidth(src);
if(!srch)srch=getheight(src);
RGBtoHSV(keycolor,&h,&s,&v);
for(int destxbuf=putsrctodestx,srcxbuf=srcx;srcy++<=srch;putsrctodesty++,srcx=srcxbuf)
for(putsrctodestx=destxbuf;srcx++<=srcw;RGBtoHSV(getpixel(srcx,srcy,src),&hbuf,&s,&v))
putpixel(putsrctodestx++,putsrctodesty,HSVtoRGB(h,s,v),dest);
}
void SetImageToGraydation(PIMAGE src,int lvl,PIMAGE dest,int sx,int sy,int sw,int sh)
{
lvl--;
float h,s,v,vshouldbe,vlvl;
if(!sw)
{
if(src)sw=src->getwidth();
else sw=getwidth();
}
if(!sh)
{
if(src)sh=src->getheight();
else sh=getheight();
}
for(;sy<sh;sy++)for(int x=sx;x<sw;x++)
{
RGBtoHSV(getpixel(x,sy,src),&h,&s,&v);
vlvl=vshouldbe=0;
while(vshouldbe<=1)
{
vlvl+=1.00000/(lvl+1);
if(v<=vlvl)
{
v=vshouldbe;
break;
}
vshouldbe+=1.00000/lvl;
}
putpixel(x,sy,HSVtoRGB(10,0,v),dest);
}
}
BOOL WillCrashedinLine(int src1y,int src1h,int src2y,int src2h)
{
if ((src1y+src1h>src2y)&&(src1y<src2y+src2h))
return true;
return false;
}
BOOL WillCrashedinRow(int src1x,int src1w,int src2x,int src2w)
{
if ((src1x+src1w>src2x)&&(src1x<src2x+src2w))
return true;
return false;
}
BOOL BeCrashed(int src1x,int src1y,int src1w,int src1h,int src2x,int src2y,int src2w,int src2h)
{
if ((src1x+src1w>src2x)&&(src1x<src2x+src2w))
if ((src1y+src1h>src2y)&&(src1y<src2y+src2h))
return true;
return false;
}
void ShowIntegerWithString(int x,int y,LPCTSTR helpstr,int integer,PIMAGE img)
{
outtextxy(x,y,helpstr,img);
ShowIntegerVariable(x+textwidth(helpstr),y,integer,img);
}
void ShowIntegerWithString(int x,int y,int integer1,LPCTSTR helpstr,int integer2,PIMAGE img)
{
char str[256];
wsprintf(str,"%d%s%d",integer1,helpstr,integer2);
outtextxy(x,y,str,img);
}
void GRectangle(int x,int y,int w,int h,PIMAGE img)
{rectangle(x,y,x+w,y+h,img);}
//模拟鼠标单击函数
void SimulateMouseLButtonDownUp(HWND hwnd,int mousex,int mousey)
{
PostMessage(hwnd,WM_LBUTTONDOWN,MK_LBUTTON,MAKELONG(mousex,mousey));
Sleep(25);
PostMessage(hwnd,WM_LBUTTONUP,MK_LBUTTON,MAKELONG(mousex,mousey));
Sleep(25);
}
void SimulateKBHit(HWND hwnd,WPARAM wParam,LPARAM lParam)
{
PostMessage(hwnd,WM_KEYDOWN,wParam,lParam);
Sleep(25);
PostMessage(hwnd,WM_KEYUP,wParam,lParam);
Sleep(25);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -