MFC利用定时器实现图片移动
(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)添加全局变量保留图片原始位置
```
// A code block
CRect OrigRect;
// An highlighted block
在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函数。
// A code block
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);
}
// An highlighted block
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇:sklearn之神经网络模型(有监督)
- 下一篇:UML常见图标总结