(1)在窗口中放入Picture Static控件,并设置控件图片属性为Bitmap,如图所示
(2)插入资源图片
选择Resource视图,插入需要的加载的图片资源。
(3)设置需要显示的图片
HBITMAP hmap;
//IDB_BITMAP_SEARCH为需要加载的图片
hmap = LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP_SEARCH));
//m_PictrlSearch为Picture Static控件绑定的变量
m_PictrlSearch.SetBitmap(hmap);
(4)添加全局变量保留图片原始位置
CRect OrigRect;
在OnInitDialog函数中存储图片原始的位置
m_PictrlSearch.GetClientRect(&OrigRect);
m_PictrlSearch.ClientToScreen(OrigRect);
ScreenToClient(OrigRect);
(5)添加定时器ID
#define WMUSER_UPDATEPIC_TIMERID WM_USER + 1001
(6)开启定时器
在指定的地方,开启定时器,设置时长(比如在按钮事件响应函数中)
SetTimer(WMUSER_UPDATEPIC_TIMERID,100,NULL);//定时时间为100ms
(7)重载OnTimer函数。
void XXXXDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default
switch (nIDEvent)
{
case WMUSER_UPDATEPIC_TIMERID:
CRect curCRT;
m_PictrlSearch.GetClientRect(&curCRT);
m_PictrlSearch.ClientToScreen(curCRT);
ScreenToClient(curCRT);
m_PictrlSearch.MoveWindow(curCRT.left+10,curCRT.top,curCRT.Width(),curCRT.Height(),TRUE); //每次向右移动10个像素
if(curCRT.left + curCRT.Width() > 265) //到达指定的位置之后
{
m_PictrlSearch.MoveWindow(OrigRect,TRUE); //返回原点
}
break;
}
CDialogEx::OnTimer(nIDEvent);
}
(8)在适当的地方关闭定时器
KillTimer(WMUSER_UPDATEPIC_TIMERID)