Magic_Game/Easy2D/EasyX/easyx.h

322 lines
12 KiB
C
Raw Normal View History

2017-09-10 23:56:52 +08:00
/******************************************************
* EasyX Library for C++ (Ver:20170827(beta))
* http://www.easyx.cn
*
* EasyX.h
* <EFBFBD><EFBFBD> VC <EFBFBD><EFBFBD>ʵ<EFBFBD>ּ򵥵Ļ<EFBFBD>ͼ
******************************************************/
#pragma once
#ifndef WINVER
#define WINVER 0x0400 // Specifies that the minimum required platform is Windows 95 and Windows NT 4.0.
#endif
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0500 // Specifies that the minimum required platform is Windows 2000.
#endif
#ifndef _WIN32_WINDOWS
#define _WIN32_WINDOWS 0x0410 // Specifies that the minimum required platform is Windows 98.
#endif
#ifndef __cplusplus
#error EasyX is only for C++
#endif
#include <windows.h>
#include <tchar.h>
// <20><>ͼ<EFBFBD><CDBC><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define SHOWCONSOLE 1 // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>ʾ
#define NOCLOSE 2 // û<>йرչ<D8B1><D5B9><EFBFBD>
#define NOMINIMIZE 4 // û<><C3BB><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>ɫ
#define BLACK 0
#define BLUE 0xAA0000
#define GREEN 0x00AA00
#define CYAN 0xAAAA00
#define RED 0x0000AA
#define MAGENTA 0xAA00AA
#define BROWN 0x0055AA
#define LIGHTGRAY 0xAAAAAA
#define DARKGRAY 0x555555
#define LIGHTBLUE 0xFF5555
#define LIGHTGREEN 0x55FF55
#define LIGHTCYAN 0xFFFF55
#define LIGHTRED 0x5555FF
#define LIGHTMAGENTA 0xFF55FF
#define YELLOW 0x55FFFF
#define WHITE 0xFFFFFF
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫת<C9AB><D7AA><EFBFBD><EFBFBD>
#define BGR(color) ( (((color) & 0xFF) << 16) | ((color) & 0xFF00FF00) | (((color) & 0xFF0000) >> 16) )
class IMAGE;
// <20><><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD>ʽ
class LINESTYLE
{
public:
LINESTYLE();
LINESTYLE(const LINESTYLE &style);
LINESTYLE& operator = (const LINESTYLE &style); // <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
virtual ~LINESTYLE();
DWORD style;
DWORD thickness;
DWORD *puserstyle;
DWORD userstylecount;
};
class FILLSTYLE
{
public:
FILLSTYLE();
FILLSTYLE(const FILLSTYLE &style);
FILLSTYLE& operator = (const FILLSTYLE &style); // <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
virtual ~FILLSTYLE();
int style; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
long hatch; // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʽ
IMAGE* ppattern; // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
};
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class IMAGE
{
public:
int getwidth() const; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
int getheight() const; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ĸ߶<C4B8>
private:
int width, height; // <20><><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
HBITMAP m_hBmp;
HDC m_hMemDC;
int m_MemCurX; // <20><>ǰ<EFBFBD><C7B0>X<EFBFBD><58><EFBFBD><EFBFBD>
int m_MemCurY; // <20><>ǰ<EFBFBD><C7B0>Y<EFBFBD><59><EFBFBD><EFBFBD>
float m_data[6];
COLORREF m_LineColor; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
COLORREF m_FillColor; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
COLORREF m_TextColor; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
COLORREF m_BkColor; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
DWORD* m_pBuffer; // <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
LINESTYLE m_LineStyle; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
FILLSTYLE m_FillStyle; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
virtual void SetDefault(); // <20><><EFBFBD><EFBFBD>ΪĬ<CEAA><C4AC>״̬
public:
IMAGE(int _width = 0, int _height = 0); // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
IMAGE(const IMAGE &img); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECBAAF>
IMAGE& operator = (const IMAGE &img); // <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
virtual ~IMAGE();
virtual void Resize(int _width, int _height); // <20><><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD>
};
// <20><>ͼģʽ<C4A3><CABD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
HWND initgraph(int width, int height, int flag = NULL); // <20><>ʼ<EFBFBD><CABC>ͼ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD>
void closegraph(); // <20>ر<EFBFBD>ͼ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD>
// <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void cleardevice(); // <20><><EFBFBD><EFBFBD>
void setcliprgn(HRGN hrgn); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>ͼ<EFBFBD><EFBFBD>IJü<C4B2><C3BC><EFBFBD>
void clearcliprgn(); // <20><><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>
void getlinestyle(LINESTYLE* pstyle); // <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
void setlinestyle(const LINESTYLE* pstyle); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
void setlinestyle(int style, int thickness = 1, const DWORD *puserstyle = NULL, DWORD userstylecount = 0); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
void getfillstyle(FILLSTYLE* pstyle); // <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
void setfillstyle(const FILLSTYLE* pstyle); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
void setfillstyle(int style, long hatch = NULL, IMAGE* ppattern = NULL); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
void setfillstyle(BYTE* ppattern8x8); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
void setorigin(int x, int y); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>
void getaspectratio(float *pxasp, float *pyasp); // <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void setaspectratio(float xasp, float yasp); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int getrop2(); // <20><>ȡǰ<C8A1><C7B0><EFBFBD>Ķ<EFBFBD>Ԫ<EFBFBD><D4AA>դ<EFBFBD><D5A4><EFBFBD><EFBFBD>ģʽ
void setrop2(int mode); // <20><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>Ķ<EFBFBD>Ԫ<EFBFBD><D4AA>դ<EFBFBD><D5A4><EFBFBD><EFBFBD>ģʽ
int getpolyfillmode(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
void setpolyfillmode(int mode); // <20><><EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
void graphdefaults(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ΪĬ<CEAA><C4AC>ֵ
COLORREF getlinecolor(); // <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
void setlinecolor(COLORREF color); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
COLORREF gettextcolor(); // <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
void settextcolor(COLORREF color); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
COLORREF getfillcolor(); // <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
void setfillcolor(COLORREF color); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
COLORREF getbkcolor(); // <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ɫ
void setbkcolor(COLORREF color); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ɫ
int getbkmode(); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
void setbkmode(int mode); // <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
// <20><>ɫģ<C9AB><C4A3>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
COLORREF RGBtoGRAY(COLORREF rgb);
void RGBtoHSL(COLORREF rgb, float *H, float *S, float *L);
void RGBtoHSV(COLORREF rgb, float *H, float *S, float *V);
COLORREF HSLtoRGB(float H, float S, float L);
COLORREF HSVtoRGB(float H, float S, float V);
// <20><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
COLORREF getpixel(int x, int y); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
void putpixel(int x, int y, COLORREF color); // <20><><EFBFBD><EFBFBD>
void moveto(int x, int y); // <20>ƶ<EFBFBD><C6B6><EFBFBD>ǰ<EFBFBD><C7B0>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
void moverel(int dx, int dy); // <20>ƶ<EFBFBD><C6B6><EFBFBD>ǰ<EFBFBD><C7B0>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
void line(int x1, int y1, int x2, int y2); // <20><><EFBFBD><EFBFBD>
void linerel(int dx, int dy); // <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
void lineto(int x, int y); // <20><><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
void rectangle (int left, int top, int right, int bottom); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void fillrectangle (int left, int top, int right, int bottom); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>б߿<D0B1>)
void solidrectangle(int left, int top, int right, int bottom); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>ޱ߿<DEB1>)
void clearrectangle(int left, int top, int right, int bottom); // <20><><EFBFBD>վ<EFBFBD><D5BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void circle (int x, int y, int radius); // <20><>Բ
void fillcircle (int x, int y, int radius); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ(<28>б߿<D0B1>)
void solidcircle(int x, int y, int radius); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ(<28>ޱ߿<DEB1>)
void clearcircle(int x, int y, int radius); // <20><><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void ellipse (int left, int top, int right, int bottom); // <20><><EFBFBD><EFBFBD>Բ
void fillellipse (int left, int top, int right, int bottom); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ(<28>б߿<D0B1>)
void solidellipse(int left, int top, int right, int bottom); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ(<28>ޱ߿<DEB1>)
void clearellipse(int left, int top, int right, int bottom); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void roundrect (int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight); // <20><>Բ<EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD>
void fillroundrect (int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD>(<28>б߿<D0B1>)
void solidroundrect(int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD>(<28>ޱ߿<DEB1>)
void clearroundrect(int left, int top, int right, int bottom, int ellipsewidth, int ellipseheight); // <20><><EFBFBD><EFBFBD>Բ<EFBFBD>Ǿ<EFBFBD><C7BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void arc (int left, int top, int right, int bottom, double stangle, double endangle); // <20><><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2>(<28><>ʼ<EFBFBD>ǶȺ<C7B6><C8BA><EFBFBD>ֹ<EFBFBD>Ƕ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
void pie (int left, int top, int right, int bottom, double stangle, double endangle); // <20><><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>(<28><>ʼ<EFBFBD>ǶȺ<C7B6><C8BA><EFBFBD>ֹ<EFBFBD>Ƕ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
void fillpie (int left, int top, int right, int bottom, double stangle, double endangle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>(<28>б߿<D0B1>)
void solidpie(int left, int top, int right, int bottom, double stangle, double endangle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD>(<28>ޱ߿<DEB1>)
void clearpie(int left, int top, int right, int bottom, double stangle, double endangle); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void polyline (const POINT *points, int num); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void polygon (const POINT *points, int num); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void fillpolygon (const POINT *points, int num); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>(<28>б߿<D0B1>)
void solidpolygon(const POINT *points, int num); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD><EFBFBD><EFBFBD>(<28>ޱ߿<DEB1>)
void clearpolygon(const POINT *points, int num); // <20><><EFBFBD>ն<EFBFBD><D5B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void floodfill(int x, int y, int border); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
void outtext(LPCTSTR str); // <20>ڵ<EFBFBD>ǰλ<C7B0><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
void outtext(TCHAR c); // <20>ڵ<EFBFBD>ǰλ<C7B0><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
void outtextxy(int x, int y, LPCTSTR str); // <20><>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
void outtextxy(int x, int y, TCHAR c); // <20><>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
int textwidth(LPCTSTR str); // <20><>ȡ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ؿ<EFBFBD>
int textwidth(TCHAR c); // <20><>ȡ<EFBFBD>ַ<EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ؿ<EFBFBD>
int textheight(LPCTSTR str); // <20><>ȡ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ظ<EFBFBD>
int textheight(TCHAR c); // <20><>ȡ<EFBFBD>ַ<EFBFBD>ռ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ظ<EFBFBD>
int drawtext(LPCTSTR str, RECT* pRect, UINT uFormat); // <20><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
int drawtext(TCHAR c, RECT* pRect, UINT uFormat); // <20><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
// <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// nHeight: <20>ַ<EFBFBD><D6B7><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>߶ȣ<DFB6>
// nWidth: <20>ַ<EFBFBD><D6B7><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0 <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ӧ)<29><>
// lpszFace: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>
// nEscapement: <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>Ƕ<EFBFBD>(<28><>λ 0.1 <20><>)<29><>
// nOrientation: ÿ<><C3BF><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>Ƕ<EFBFBD>(<28><>λ 0.1 <20><>)<29><>
// nWeight: <20>ַ<EFBFBD><D6B7>ıʻ<C4B1><CABB><EFBFBD>ϸ(0 <20><>ʾĬ<CABE>ϴ<EFBFBD>ϸ)<29><>
// bItalic: <20>Ƿ<EFBFBD>б<EFBFBD>
// bUnderline: <20>Ƿ<EFBFBD><C7B7>»<EFBFBD><C2BB>ߣ<EFBFBD>
// bStrikeOut: <20>Ƿ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ߣ<EFBFBD>
// fbCharSet: ָ<><D6B8><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>
// fbOutPrecision: ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>
// fbClipPrecision: ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ֵļ<D6B5><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>
// fbQuality: ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// fbPitchAndFamily: ָ<><D6B8><EFBFBD>Գ<EFBFBD><D4B3>ʽ<E6B7BD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>С<EFBFBD>
void settextstyle(int nHeight, int nWidth, LPCTSTR lpszFace);
void settextstyle(int nHeight, int nWidth, LPCTSTR lpszFace, int nEscapement, int nOrientation, int nWeight, bool bItalic, bool bUnderline, bool bStrikeOut);
void settextstyle(int nHeight, int nWidth, LPCTSTR lpszFace, int nEscapement, int nOrientation, int nWeight, bool bItalic, bool bUnderline, bool bStrikeOut, BYTE fbCharSet, BYTE fbOutPrecision, BYTE fbClipPrecision, BYTE fbQuality, BYTE fbPitchAndFamily);
void settextstyle(const LOGFONT *font); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
void gettextstyle(LOGFONT *font); // <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ
// ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void loadimage(IMAGE *pDstImg, LPCTSTR pImgFile, int nWidth = 0, int nHeight = 0, bool bResize = false); // <20><>ͼƬ<CDBC>ļ<EFBFBD><C4BC><EFBFBD>ȡͼ<C8A1><CDBC>(bmp/jpg/gif/emf/wmf)
void loadimage(IMAGE *pDstImg, LPCTSTR pResType, LPCTSTR pResName, int nWidth = 0, int nHeight = 0, bool bResize = false); // <20><><EFBFBD><EFBFBD>Դ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ȡͼ<C8A1><CDBC>(bmp/jpg/gif/emf/wmf)
void saveimage(LPCTSTR pImgFile, IMAGE* pImg = NULL); // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
void getimage(IMAGE *pDstImg, int srcX, int srcY, int srcWidth, int srcHeight); // <20>ӵ<EFBFBD>ǰ<EFBFBD><C7B0>ͼ<EFBFBD><EFBFBD><E8B1B8>ȡͼ<C8A1><CDBC>
void putimage(int dstX, int dstY, const IMAGE *pSrcImg, DWORD dwRop = SRCCOPY); // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ
void putimage(int dstX, int dstY, int dstWidth, int dstHeight, const IMAGE *pSrcImg, int srcX, int srcY, DWORD dwRop = SRCCOPY); // <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ(ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
void rotateimage(IMAGE *dstimg, IMAGE *srcimg, double radian, COLORREF bkcolor = BLACK, bool autosize = false, bool highquality = true);// <20><>תͼ<D7AA><CDBC>
void Resize(IMAGE* pImg, int width, int height); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>Ĵ<EFBFBD>С
DWORD* GetImageBuffer(IMAGE* pImg = NULL); // <20><>ȡ<EFBFBD><C8A1>ͼ<EFBFBD><EFBFBD><E8B1B8><EFBFBD>Դ<EFBFBD>ָ<EFBFBD><D6B8>
IMAGE* GetWorkingImage(); // <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ͼ<EFBFBD>
void SetWorkingImage(IMAGE* pImg = NULL); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>ͼ<EFBFBD>
HDC GetImageHDC(IMAGE* pImg = NULL); // <20><>ȡ<EFBFBD><C8A1>ͼ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>(HDC)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int getwidth(); // <20><>ȡ<EFBFBD><C8A1>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int getheight(); // <20><>ȡ<EFBFBD><C8A1>ͼ<EFBFBD><CDBC><EFBFBD>߶<EFBFBD>
int getx(); // <20><>ȡ<EFBFBD><C8A1>ǰ x <20><><EFBFBD><EFBFBD>
int gety(); // <20><>ȡ<EFBFBD><C8A1>ǰ y <20><><EFBFBD><EFBFBD>
void BeginBatchDraw(); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void FlushBatchDraw(); // ִ<><D6B4>δ<EFBFBD><CEB4><EFBFBD>ɵĻ<C9B5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void FlushBatchDraw(int left, int top, int right, int bottom); // ִ<><D6B4>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ɵĻ<C9B5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void EndBatchDraw(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>ִ<EFBFBD><D6B4>δ<EFBFBD><CEB4><EFBFBD>ɵĻ<C9B5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void EndBatchDraw(int left, int top, int right, int bottom); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>ִ<EFBFBD><D6B4>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>ɵĻ<C9B5><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HWND GetHWnd(); // <20><>ȡ<EFBFBD><C8A1>ͼ<EFBFBD><CDBC><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>(HWND)
TCHAR* GetEasyXVer(); // <20><>ȡ EasyX <20><>ǰ<EFBFBD>
// <20><>ȡ<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>
bool InputBox(LPTSTR pString, int nMaxCount, LPCTSTR pPrompt = NULL, LPCTSTR pTitle = NULL, LPCTSTR pDefault = NULL, int width = 0, int height = 0, bool bOnlyOK = true);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
// ֧<><D6A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
// WM_MOUSEMOVE <09><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>
// WM_MOUSEWHEEL <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>
// WM_LBUTTONDOWN <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// WM_LBUTTONUP <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// WM_LBUTTONDBLCLK <09><><EFBFBD><EFBFBD>˫<EFBFBD><CBAB>
// WM_MBUTTONDOWN <09>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>
// WM_MBUTTONUP <09>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>
// WM_MBUTTONDBLCLK <09>м<EFBFBD>˫<EFBFBD><CBAB>
// WM_RBUTTONDOWN <09>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD>
// WM_RBUTTONUP <09>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD>
// WM_RBUTTONDBLCLK <09>Ҽ<EFBFBD>˫<EFBFBD><CBAB>
struct MOUSEMSG
{
UINT uMsg; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
bool mkCtrl; // Ctrl <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
bool mkShift; // Shift <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
bool mkLButton; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
bool mkMButton; // <20><><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
bool mkRButton; // <20><><EFBFBD><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
short x; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD> x <20><><EFBFBD><EFBFBD>
short y; // <20><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD> y <20><><EFBFBD><EFBFBD>
short wheel; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>ֵ (120 <20>ı<EFBFBD><C4B1><EFBFBD>)
};
bool MouseHit(); // <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
MOUSEMSG GetMouseMsg(); // <20><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3>͵ȴ<CDB5>
void FlushMouseMsgBuffer(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>