在大一时,学过MFC,不过那时刚接触编程,C/C++学完不久,跟重要的是没动手编程,后来又做ACM去了。现在大三了,各种实验课设老师都要求用VC可视化,于是借着机会学了点MFC皮毛,在此总结一些常用技巧,简直贻笑大方了!由于很多东西没有上升的理论层面,在此只能介绍下应用,方便学习交流,同时以备后面用到。

首先谈谈动态更新对话框背景图片,以营造动画效果。我只用到了其中一种,在此列出。

要动态更新对话框背景图片,就得先会添加背景图片,然后重载定时器函数实时更新即可。关于添加背景图片,敬请参考

http://blog.csdn.net/xj2419174554/article/details/1825741。

在该类OnInitDialog函数中添加SetTimer语句,如下:

BOOL CCarShowDlg::OnInitDialog()
{nowOne=1;CDialog::OnInitDialog();SetTimer(1, 200, NULL);return true;
}

然后添加消息响应WM_TIMER。一般步骤为点击菜单栏“查看”,选择“建立类向导”,在相应对话框类中选择”WM_TIMER“,系统自动添加OnTimer函数,然后在里面添加代码即可,如下

void CCarShowDlg::OnTimer(UINT nIDEvent)
{Invalidate();CDialog::OnTimer(nIDEvent);
}

此方法是调用OnPaint()函数动态更新的,所以应在 OnPaint()函数中设置你想要的效果。举个例子

/************************************************
*
*功能:重绘对话框背景,模拟小车行驶动画
*
*************************************************/
void CCarShowDlg::OnPaint()
{CPaintDC dc(this);CRect rc;GetClientRect(&rc);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBackground;   if(nowOne==1){if(Direction)nowOne++;else nowOne--;bmpBackground.LoadBitmap(IDB_BITMAP1);}else if(nowOne==2){if(Direction)nowOne++;else nowOne--;bmpBackground.LoadBitmap(IDB_BITMAP2);}else if(nowOne==3){if(Direction)nowOne++;else nowOne--;bmpBackground.LoadBitmap(IDB_BITMAP3);}else if(nowOne==4){if(Direction)nowOne++;else nowOne--;bmpBackground.LoadBitmap(IDB_BITMAP4);}else if(nowOne==5){if(Direction)nowOne++;else nowOne--;bmpBackground.LoadBitmap(IDB_BITMAP5);}else if(nowOne==6){if(Direction)nowOne++;else nowOne--;bmpBackground.LoadBitmap(IDB_BITMAP6);}else if(nowOne==7){nowOne=1;bmpBackground.LoadBitmap(IDB_BITMAP1);}else if(nowOne==0){nowOne=6;bmpBackground.LoadBitmap(IDB_BITMAP6);}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小细节之动态更新对话框背景图片相关推荐

  1. 重拾CCNA,学习笔记持续更新ing......(4)

    重拾CCNA,学习笔记持续更新ing......(4) 路由器作用功能的经典解说(笑)(非原创) 假设你的名字叫小不点,你住在一个大院子里,你的邻居有很多小伙伴,在门口传达室还有个看大门的李大爷,李大 ...

  2. 动态给div背景图片赋值

    项目场景:springboot+thymeleaf 提示:动态给div背景图片赋值 例如:项目场景:通过Ajax请求,在页面图片未加载之前获取到数据库中背景图片的地址,并赋值给div 问题描述:通过A ...

  3. MFC对话框背景图片的设置

    MFC对话框背景图片的设置 1.插入一个Bitmap的资源图片,假设资源名称为:IDC_BITMAP1(一般默认的第一个BMP文件是它,接下来的为IDC_BITMAP2,以此类推) 2.在CXXXDi ...

  4. 在angular7中HTML动态加载背景图片

    通过使用: <div [style.backgroundImage]= 'url('+imgURL+')'>背景</div> 实现动态加载背景图片功能具体内容请查看:mojoc ...

  5. 微信小程序|页面动态更新数据

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 欢迎加入团队圈子!与作者面对面!直接点击! 问题描述 每一个小 ...

  6. MFC 对话框背景图片

    在windows开发当中做界面的主要技术之一就是使用MFC,通常我们看到的QQ,360,暴风影音这些漂亮的界面都可以用MFC来实现.今天我们来说一下如何用MFC美化对话框,默认情况下,对话框的背景如下 ...

  7. 简单东西-java动态更改JLabel背景图片

    java的awt设置背景图片的一种方式是使用JLabel类,它的setIcon可以设置背景图片,但是如何动态修改背景图片呢?这源于问答频道上的一个问题,题主给的代码总是无法正确动态修改背景图片,找了一 ...

  8. MFC 对话框 背景图片 以及消除 字体重影 字体重叠

    [转载 ACM不挂科] http://hi.baidu.com/acmbuguake/item/380c1344605f243311ee1e74 很多人都想改变对话框的背景图,其实很简单,只需要一个函 ...

  9. 微信小程序之页面样式以及背景图片显示问题

    ##一.背景 下面这些都是在开发的过程中,记录下来的笔记. ##二.样式及背景图片显示问题 1.修改单个页面的背景色: 在页面的wxss里面加上这句代码: page{background-color: ...

最新文章

  1. virtual keyboard
  2. 页面与页面之间传递参数
  3. android多线程下载原理,安卓多线程断点续传下载功能(靠谱第三方组件,原理demo)...
  4. 面试题总结14 动态规划
  5. Ubuntu18.04 root 登录
  6. [Git高级教程 (一)] 通过 Tag 标签回退版本修复 bug
  7. 6-6-3:STL之map和set——multiset和multimap及set和map在oj题中的用处
  8. ZZULIOJ 1130: 杨辉三角
  9. 获取传入element在Document中的name相同的elements中的顺序
  10. bzoj1193 [HNOI2006]马步距离 构造+枚举
  11. 【MySQL】MySQL删除数据库的时候卡死
  12. python动态心形代码_父亲节,程序员几条代码硬核示爱
  13. 如何产生好的词向量?
  14. 使用EasyRecovery简单修复视频
  15. mybatis源码解析 - 通过一个简单查询例子分析流程
  16. 50. 避免重定向(11)
  17. [Linux]----马哥Linux运维共208讲(初级+中级+高级+必备软件+PPT)01_04_Linux操作系统基础
  18. CCF系列题解--2018年9月第一题 卖菜
  19. 利用监听器(Listener)实现用户访问记录
  20. JavaWeb 打开的默认主页设置问题

热门文章

  1. html如何写图片路径?
  2. 【Halcon】插值算法通俗讲解
  3. 数据库查数据 索引
  4. 大屏自适应文章收藏分享
  5. 1054: 猴子吃桃(C)
  6. Hadoop多节点规划与搭建
  7. 拉格朗日插值法《python数据分析与挖掘实践》
  8. CSDN20181219博客黑板报
  9. 100 句,读 到 哪 一 句 你 难 过 了?
  10. ubuntu账户添加和删除