⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 egg.h

📁 某国际贸易中心共有40层
💻 H
📖 第 1 页 / 共 2 页
字号:
 *      - 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 + -