📄 egg.h
字号:
* - DARK_YELLOW —— 深黄色
* - LIGHT_GRAY —— 浅灰色
* - DARK_GRAY —— 深灰色
* - BLUE —— 蓝色
* - GREEN —— 绿色
* - CYAN —— 青色
* - RED —— 红色
* - MAGENTA —— 紫色
* - YELLOW —— 黄色
* - WHITE —— 白色
* @see SetPen()
*/
void SetPenColor(unsigned long color);
/**
* 设置画笔宽度
*
* 宽度后,所有的后续绘图操作都将使用此设置。
* @param fWidth 画笔宽度,单位厘米
* @see SetPen
* @see SetPenColor
*/
void SetPenWidth(double fWidth);
//! @}
/**
* \defgroup EggInput 交互功能
* 下列数据类型和函数实现了Egg响应用户输入的功能。通过它们可以得到用户按下了哪些
* 键盘和鼠标按键,并能得知鼠标指针的位置。
* @{
*/
/**
* 等待新事件
*
* 持续等待,直到有新事件发生才返回。
*
* @return 返回事件类型,包括如下事件:
* - EXIT —— 用户要求退出程序。点击关闭窗口按钮或按Alt+F4都会使此值被返回。
* 调用者此时应该释放占用的所有资源,然后退出程序;
* - TIMER —— 定时周期事件;
* - MOUSEMOVE —— 鼠标被移动;通过 GetMouseX() 和 GetMouseY() 可以得到鼠标移动
* 到的位置;
* - KEYDOWN —— 键盘或鼠标按键被按下;通过 GetStruckKey() 可以知道是哪个键被按下;
* - KEYUP —— 键盘或鼠标按键被释放;通过 GetStruckKey() 可以知道是哪个键被按下;
*
* @see EVENT_TYPE
* @see GetStruckKey()
* @see GetMouseX()
* @see GetMouseY()
* @see IsKeyDown()
* @see WaitForExit()
*/
EVENT_TYPE WaitForEvent(void);
/**
* 等待退出命令
*
* 当用户关闭窗口,此函数返回。
*/
void WaitForExit(void);
/**
* 判断按键是否正在被按下
*
* 判断指定的按键是否正处于按下状态。这在判断多个按键是否被同时按下时非常有用。
*
* @param uVKCode 被判断的按键的虚拟键值
* @return 非0,按键处于按下状态;0,按键处于弹起状态
*/
int IsKeyDown(unsigned int uVKCode);
/**
* 得到被按动的键的虚拟键值
*
* 与 WaitForEvent() 配合使用。当WaitForEvent() 返回KEYDOWN或KEYUP时,调用此函
* 数可以得到是哪个按键(包括键盘和鼠标按键)发生了这个动作。
*
* @return 按动的键的虚拟键值
* @see WaitForEvent()
*/
unsigned int GetStruckKey(void);
/**
* 鼠标指针当前位置的X坐标
*
* 返回鼠标指针在盘子内当前的X坐标。
* @return 鼠标在盘子内当前的X坐标
*
* @see GetMouseY()
*/
double GetMouseX(void);
/**
* 鼠标指针当前位置的Y坐标
*
* 返回鼠标指针在盘子内当前的Y坐标。
* @return 鼠标在盘子内当前的Y坐标
*
* @see GetMouseX()
*/
double GetMouseY(void);
//! @}
/**
* \defgroup EggAnimation 动画功能
* 下列函数实现了Egg的动画功能。通过它们可以建立新的egg,移动egg的位置以实现动
* 画效果。还可以掌控时间间隔,按固定周期显示动画。
* @{
*/
/**
* 下蛋,^_^
*
* Egg平台的一大特色就是可以下无数个蛋,叫做egg。每个egg都是一个独立的画布,可
* 以在其上任意绘画。可以移动egg在盘子内的位置,达到动画效果。<BR>
* 本函数建立一个新egg,它位于所有egg的最顶层,大小与盘子一致并完全覆盖它,
* 但此egg完全透明(隐形蛋)。新建的egg自动成为活动蛋。
*
* @return 新建egg的句柄,作为其它绘图函数的参数使用。
* @see EatEgg()
* @see ChangeEggLayer()
*/
HEGG LayEgg(void);
/**
* 吃蛋,^_^
*
* 如果活动egg不再需要,可以把它吃了,省得占地方(内存等资源)。被吃了的蛋会彻
* 底消失。但系统剩下的最后一个蛋永远不会被吃掉。
*
* @see LayEgg()
*/
void EatEgg(void);
/**
* 设置活动蛋
*
* 活动蛋是各种egg操作的对象。
*
* @param hEgg 活动蛋句柄。0表示使用最底层的egg(一般由EggStart()建立,但
* ChangeEggLayer() 后会有所变化)。
*/
void SetActiveEgg(HEGG hEgg);
/**
* 得到活动蛋句柄
*
* 活动蛋是各种egg操作的对象。
*
* @return 活动蛋句柄
*/
HEGG GetActiveEgg(void);
/**
* 在盘子上移动egg到指定位置
*
* 新建的egg缺省覆盖整个盘子。调用此函数可以移动egg的左上角到盘子的指定位置。
*
* @param x 目标点在盘子上的X轴坐标
* @param y 目标点在盘子上的Y轴坐标
* @see LayEgg()
* @see OffsetEgg()
* @see GetEggXPos()
* @see GetEggYPos()
*/
void MoveEgg(double x, double y);
/**
* 在盘子上把egg移动指定的距离
*
* 在盘子的X轴位移dx厘米,在Y轴位移dy厘米。
*
* @param dx 在盘子的X轴位移的大小,正值表示向正方向移动,负值表示向负方向移动,
* 零值表示不移动。
* @param dy 在盘子的Y轴位移的大小,正值表示向正方向移动,负值表示向负方向移动,
* 零值表示不移动。
* @see LayEgg()
* @see MoveEgg()
* @see GetEggXPos()
* @see GetEggYPos()
*/
void OffsetEgg(double dx, double dy);
/**
* 改变活动egg的层
*
* 在盘子上,当两蛋相交,后下的蛋覆盖着先下的蛋。此函数可以改变egg的覆盖顺序。<br>
* ChangeEggLayer(1); //将活动蛋提升一层 <br>
* ChangeEggLayer(-2); //将活动蛋降低两层 <br>
* ChangeEggLayer(TOP); //将活动蛋置于最顶层 <br>
* ChangeEggLayer(BOTTOM); //将活动蛋置于最底层 <br>
*
* @param nOffset 正数,提升的层数;负数,降低的层数;0,无效果;TOP,最顶层;
BOTTOM,最底层
* @see LayEgg()
*/
void ChangeEggLayer(int nOffset);
/**
* 显示或隐藏egg
*
* 用ShowEgg(0)隐藏活动egg,用ShowEgg(1)重新显示它。
*
* @param bShow 是否显示。0表示不显示,非0表示显示
*/
void ShowEgg(int bShow);
/**
* 得到egg在盘子内的X坐标
*
* 返回egg左上角在盘子内的X坐标
*
* @return egg左上角在盘子内的X坐标
* @see MoveEgg()
* @see OffsetEgg()
*/
double GetEggXPos(void);
/**
* 得到egg在盘子内的Y坐标
*
* 返回egg左上角在盘子内的Y坐标
*
* @return egg左上角在盘子内的Y坐标
* @see MoveEgg()
* @see OffsetEgg()
*/
double GetEggYPos(void);
/**
* 启动周期定时器
*
* 定时器就像一个整点报时的闹钟,每隔一小时叫响一次。但Egg提供的定时器功能更强
* 大,你可以指定任意的报时周期,然后从现在起,按照这个周期产生一系列的定时点。
* 启动定时器后,用 WaitForEvent() 检查是否到达定时点。<br>
* 重新调用此函数可以启动一个新的定时器,原定时器自动失效。
*
* @param uMillisecond 产生定时点的周期,单位是毫秒(建议不要使用小于50毫秒的周
* 期)。
* @see StopTimer()
* @see WaitForEvent()
* @see WaitFor()
*/
void StartTimer(unsigned int uMillisecond);
/**
* 停止周期定时器
*
* 此函数停止定时器,不再产生周期事件。
*
* @see StartTimer()
* @see WaitForEvent()
* @see WaitFor()
*/
void StopTimer(void);
/**
* 延时函数
*
* 此函数执行uMillisecond毫秒后返回TRUE;如果时间未到,用户关闭了窗口,返回FALSE<BR>
* <b>注意:</b>调用此函数后,相当于调用了StopTimer()
*
* @param uMillisecond 等待时间,单位毫秒
* @return 时间到返回非0值;时间未到,但窗口被关闭返回0。
* @see StartTimer()
* @see StopTimer()
* @see WaitForEvent()
*/
int WaitFor(unsigned int uMillisecond);
/**
* 设置是否自动更新屏幕
*
* 如bAuto为非0值,此后的每个绘画和动画操作都将马上显示到屏幕上;如bAuto为0,
* 则只有 Update() 被调用时才会刷新屏幕。
*
* @param bAuto 是否自动更新
* @see Update()
*/
void SetAutoUpdate(int bAuto);
/**
* 更新Egg窗口
*
* 此函数重绘Egg窗口。当自动更新被设为FALSE时,必须执行此函数才能将绘画效果展现
* 在屏幕上。
*
* @see SetAutoUpdate()
*/
void Update(void);
//! @}
/**
* \defgroup Other 其它
* 其它辅助功能
* @{
*/
/**
* 如果你不知道HWND是什么,你就不需要此函数
*
* 得到Egg窗口的句柄
*
* @return Egg窗口的句柄
*/
HWND GetEggHwnd(void);
//! @}
#ifdef __cplusplus
}
#endif
#endif //_EGG_SUNNER_HIT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -