admin 管理员组文章数量: 887021
mfc , 超简单实现动态背景,
1, 在主对话框中, 添加一个类属性 nowOne, 标记循环的位图
2, 在初始化函数中, 添加一个线程, ThreadProc, 不添加直接设置一个定时器也行
//创建动态背景线程DWORD ThreadID = 1;HANDLE pThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, m_hWnd, 0, &ThreadID);
3, 在ThreadProc中, 设置一个定时器,
DWORD WINAPI ThreadProc(HWND hWnd)
{SetTimer(hWnd, 1, 200, NULL);return 0;
}
4, 在窗口中响应定时器消息, Invalidate(false), 刷新界面
void CMFCApplication1Dlg::OnTimer(UINT_PTR nIDEvent)
{// TODO: 在此添加消息处理程序代码和/或调用默认值Invalidate(false);
}
5, 处理窗口中的Onpaint函数, 内容如下, 其中154-202, 是插入位图的资源id
CPaintDC dc(this);CRect rc;GetClientRect(&rc);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBackground;bmpBackground.LoadBitmap(nowOne);++nowOne;if (nowOne > 202) nowOne = 154;BITMAP bitmap;bmpBackground.GetBitmap(&bitmap);CBitmap* pbmpPri = dcMem.SelectObject(&bmpBackground);dc.StretchBlt(0, 0, rc.Width(), rc.Height(), &dcMem, 0, 0, bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);
缺点: 文件体积显著增大
效果如图:
版权声明:本文标题:mfc , 超简单实现动态背景, 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1687460947h105095.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论