📄 mythread.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include "mythread.h"
#include "animatefrm.h"
#pragma package(smart_init)
__fastcall AnimateThread::AnimateThread(bool CreateSuspended)
: TThread(CreateSuspended)
{
FreeOnTerminate=true; //线程结束时自动删除
}
//---------------------------------------------------------------------------
void __fastcall AnimateThread::Execute()
{
int num=0; //当前显示图片的序号
int steps=5; //用5步追到鼠标
long tick0,tick;
int Left,Top;
POINT cursorPt; //鼠标位置
Left=Screen->Width;
Top=Screen->Height;
tick0=GetTickCount(); //读计时初值
while(!aForm->End) {
tick=GetTickCount(); //读计时当前值
if(tick-tick0>100) { //每秒更换图片10次
aForm->Left=Screen->Width+20; //将窗口移出屏幕
aForm->Top=Screen->Height+20;
tick0=tick; //重置计时初值
for(int i=0;i<IMAGECOUNT;i++)
if(i==num) aForm->Images[i]->Visible=true;
else aForm->Images[i]->Visible=false;
num=(num+1)%IMAGECOUNT; //num取值范围为0~图片总数-1
GetCursorPos(&cursorPt); //读鼠标位置
//边界调整
if(cursorPt.x>=Screen->Width-aForm->Width)
cursorPt.x-=aForm->Width+16;
if(cursorPt.y>=Screen->Height-aForm->Height)
cursorPt.y-=aForm->Height+16;
else cursorPt.y+=16; //避开鼠标热点
Left+=(cursorPt.x-Left)/steps;
Top+=(cursorPt.y-Top)/steps;
aForm->Left=Left; aForm->Top=Top; //将窗口移入相应位置
}
}
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -