在c的基础上easyx的个人笔记

设定颜色类型数据 col (color)
无论以

colcolor
纯语言如WHITE,BLACK,CYAN或是LIGHTMAGETA等形式
十六进制的值如0xFFFFFF,0x000000,0xAAAA00或是0xFF55FF
RGBRGB(256,256,256),RGB(0,0,0)或RGB(int,int,int)
HSVHue(色相) 分量,0 <= H < 360;Saturation(饱和度) 分量,0 <= S <= 1;Value(明度) 分量,0 <= V <= 1。如HSV()
HSLH原 HSL 颜色模型的 Hue(色相) 分量,0 <= H < 360;S原 HSL 颜色模型的 Saturation(饱和度) 分量,0 <= S <= 1;L原 HSL 颜色模型的 Lightness(亮度) 分量,0 <= L <= 1。
HSLtoRGB HSVtoRGB RGBtoGRAY RGBtoHSL RGBtoHSV等不加赘述

获取使用者的输入,
即是获取信息,
有以下四大类:

Category identifierDescription
EM_MOUSEMouse message
EM_KEYKey message
EM_CHARCharacter message
EM_WINDOWWindow message
  • Mouse message
    使用示例
ExMessage m;		// Define a message variable
   while(true)			//continuously get mouse message if get no input
   //or you can exchange this sentence to 
   			//MOUSEMSG m;
   			//if (MouseHit())
   		//	m = GetMouseMsg();
 //this writing does not require so much system memory,can also get mousemsg
   {
   	// Get a mouse message or a key message
   	m = getmessage(EM_MOUSE | EM_KEY);//indicate message type
   	switch(m.uMsg)										//from structure MOUSEMSG
   	{
   		case WM_MOUSEMOVE:					//defined in enum "Incurrent Mousemsg" 
   			// Draw a red pixel when the mouse move
   			putpixel(m.x, m.y, RED);
   			break;
   		case WM_LBUTTONDOWN:				//defined in enum "Incurrent Mousemsg" 
   			// If the left button is clicked while pressing the Ctrl key
   			if (m.ctrl)											//from structure MOUSEMSG
   				// Draw a big square
   				rectangle(m.x - 10, m.y - 10, m.x + 10, m.y + 10);
   			else
   				// Draw a small square
   				rectangle(m.x - 5, m.y - 5, m.x + 5, m.y + 5);
   			break;
   		case WM_KEYDOWN:
   			if (m.vkcode == VK_ESCAPE)	//VK_ESCAPE from KEYMSG
   				return 0;	// Press ESC key to exit
   	}
   }

or you just want to get a very event ,you can only code like

MOUSEMSG m;
if(m==(1,1,1))		//Ctrl+Shift+LButtonDown
	C_operate(R-301);//any operation

just as it is displayed forehead ,it can be commonly used in any cases alike
the importance is just:
1.the structure of MOUSEMSG

struct MOUSEMSG
{
UINT uMsg; // 当前鼠标消息
bool mkCtrl; // Ctrl 键是否按下
bool mkShift; // Shift 键是否按下
bool mkLButton; // 鼠标左键是否按下
bool mkMButton; // 鼠标中键是否按下
bool mkRButton; // 鼠标右键是否按下
int x; // 当前鼠标 x 坐标
int y; // 当前鼠标 y 坐标
int wheel; // 鼠标滚轮滚动值
};

2.enum INCURRENT_MOUSEMSG(EM_MOUSE)

enumoperation
WM_MOUSEMOVE鼠标移动消息
WM_MOUSEWHEEL鼠标滚轮拨动消息
WM_LBUTTONDOWN左键按下消息
WM_LBUTTONUP左键弹起消息
WM_LBUTTONDBLCLK左键双击消息
WM_MBUTTONDOWN中键按下消息
WM_MBUTTONUP中键弹起消息
WM_MBUTTONDBLCLK中键双击消息
WM_RBUTTONDOWN右键按下消息
WM_RBUTTONUP右键弹起消息
WM_RBUTTONDBLCLK右键双击消息

mouse is the same with keyboard:
1.struct KEYMSG
{
BYTE vkcode; // 按键的虚拟键码
BYTE scancode; // 按键的扫描码(依赖于 OEM)
bool extended :1; // 按键是否是扩展键
bool prevdown :1; // 按键的前一个状态是否按下
};

2.enum INCURRENT_KEYMSG(EM_key)

enumoperation
WM_KEYDOWN按键按下消息
WM_KEYUP按键弹起消息

3.enum vkcode and scancode

int A=0x41;
int B=0x42;
int C=0x43;
int D=0x44;
int E=0x45;
int F=0x46;
int G=0x47;
int H=0x48;
int I=0x49;
int J=0x4A;
int K=0x4B;
int L=0x4C;
int M=0x4D;
int N=0x4E;
int O=0x4F;
int P=0x50;
int Q=0x51;
int R=0x52;
int S=0x53;
int T=0x54;
int U=0x55;
int V=0x56;
int W=0x57;
int X=0x58;
int Y=0x59;
int Z=0x5A;

details in
https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes

window message
1.struct WINDOWMSG
{
WPARAM wParam;
LPARAM lParam;
};
2.EM_WINDOW

WM_ACTIVATE窗口激活状态改变消息
WM_MOVE窗口移动消息
WM_SIZE窗口大小改变消息

图形文本标准字体

字体符号名等价值含义
DEFAULT_FONT08*8点阵字型(缺省字体)
TRIPLEx_FONT1笔划式三倍字型(三倍字体)
SMALL_FONT2笔划式小字型(小字体)
SANS_SERIF_FONT3笔划式字(Sanserif字体)
GOTHIC_FONT4笔划黑体字型(哥特体)

the basic operations of a simple easyx operation

  1. initialize window_gragh
	 initgragh(int length,int width);
	 setbkcolor(col color); 				//WHITE or 0xFFFFFF or RGB(0,0,0)
	 cleardevice();							//void cleardevice() guarantees
	 setfillcolor(color col));/			//initial backgrround is white
	 setorigin(int x0,int y0);			//set the logic origin of the coordinate

2.pre-treatment of plotting

{
	setcolor(col color);
	setlinestyle(PS_SOLID,int width);
	//if drawing close shapes 
	setfillcolor(col color);		//initial is transparent
	
}
  1. Get Message
	Exmessage mk,c,w;
	c = getmessage(EM_CHAR);				//CHARMSG c;
	w = getmessage(EM_WINDOW);				//WINDOWMSG w;
int A=0x41;
int B=0x42;
int C=0x43;
int D=0x44;
int E=0x45;
int F=0x46;
int G=0x47;
int H=0x48;
int I=0x49;
int J=0x4A;
int K=0x4B;
int L=0x4C;
int M=0x4D;
int N=0x4E;
int O=0x4F;
int P=0x50;
int Q=0x51;
int R=0x52;
int S=0x53;
int T=0x54;
int U=0x55;
int V=0x56;
int W=0x57;
int X=0x58;
int Y=0x59;
int Z=0x5A;
	while(true)
	{
		mk = getmessage(EM_MOUSE | EM_KEY);		//MOUSEMSG m,KEYMSG k;
		if(mousehit())
		{
			switch(mk.message)		//mk.uMsg
			{
				case WM_MOUSEMOVE:
				putpixel(m.x ,m.y ,WHITE);break;
				
				case WM_LBUTTONDOWN:
				shoot();break;
				
				case WM_RBUTTONDOWN:
				open_optics();break;
				
				case WM_MOUSEWHEEL:
				swap_weapon();break;
				
				case VK_XBUTTON1:
				mk.mkCtrl = 1;
				
				case VK_XBUTTON2:
				mk.mkShift = 1;
				
			};
		}
		elif(keyhit())
		{
			switch(keyhit())
			{
				case W:
				move_foreward();
				
				case A:
				move_left();
				
				case S:
				move_backward();
				
				case D:
				move_right();
				
				case VK_UP:
				layer_up();
				
				case VK_DOWN:
				layer_down();
				
				case VK_RIGHT:
				turn_left();
				
				case VK_LEFT:
				turn_right();
			}
		}
	}
  1. s
  2. d
  3. f
  4. g
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值