完了,这次土鳖了,介绍个非常过时的东西,其实就是自己收藏一下,怕以后想用的时候自己忘了。

直接进入正题,首先用ps等工具做一个自己喜欢的程序启动的logo位图,我这里制作的logo大小为500*313,比例为黄金比例,看上去很舒服。

新建mfc工程,把制作好的logo位图添加的资源中去,资源ID号设置为IDB_SPLASH。

新建类CSplashWnd,

[cpp] view plain copy
  1. #pragma once
  2. #include "afxwin.h"
  3. class CSplashWnd :
  4. public CWnd
  5. {
  6. public:
  7. CSplashWnd(void);
  8. ~CSplashWnd(void);
  9. CBitmap m_bitmap;
  10. static void ShowSplashScreen(CWnd* pParentWnd = NULL);
  11. protected:
  12. BOOL Create(CWnd* pParentWnd = NULL);
  13. static CSplashWnd* c_pSplashWnd;
  14. public:
  15. DECLARE_MESSAGE_MAP()
  16. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  17. afx_msg void OnPaint();
  18. afx_msg void OnTimer(UINT_PTR nIDEvent);
  19. };

为各成员函数添加代码:

[cpp] view plain copy
  1. #include "StdAfx.h"
  2. #include "SplashWnd.h"
  3. #include "resource.h"
  4. CSplashWnd* CSplashWnd::c_pSplashWnd;
  5. BEGIN_MESSAGE_MAP(CSplashWnd, CWnd)
  6. ON_WM_CREATE()
  7. ON_WM_PAINT()
  8. ON_WM_TIMER()
  9. END_MESSAGE_MAP()
  10. CSplashWnd::CSplashWnd(void)
  11. /*: c_pSplashWnd(NULL)*/
  12. {
  13. }
  14. CSplashWnd::~CSplashWnd(void)
  15. {
  16. }
  17. void CSplashWnd::ShowSplashScreen(CWnd* pParentWnd)
  18. {
  19. c_pSplashWnd = new CSplashWnd;
  20. if (!c_pSplashWnd->Create(pParentWnd))
  21. delete c_pSplashWnd;
  22. else
  23. c_pSplashWnd->UpdateWindow();
  24. }
  25. BOOL CSplashWnd::Create(CWnd* pParentWnd)
  26. {
  27. if (!m_bitmap.LoadBitmap(IDB_SPLASH))   /*加载位图资源,需在资源文件中添加*/
  28. return FALSE;
  29. BITMAP bm;
  30. m_bitmap.GetBitmap(&bm);
  31. return CreateEx(0,
  32. AfxRegisterWndClass(0, AfxGetApp()->LoadStandardCursor(IDC_ARROW)),
  33. NULL, WS_POPUP | WS_VISIBLE, 0, 0, bm.bmWidth, bm.bmHeight, pParentWnd->GetSafeHwnd(), NULL);
  34. return 0;
  35. }
  36. int CSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
  37. {
  38. if (CWnd::OnCreate(lpCreateStruct) == -1)
  39. return -1;
  40. // TODO:  在此添加您专用的创建代码
  41. // Center the window.
  42. CenterWindow();
  43. // Set a timer to destroy the splash screen.
  44. SetTimer(1, 1000, NULL);                /*设置消隐时间*/
  45. return 0;
  46. }
  47. void CSplashWnd::OnPaint()
  48. {
  49. CPaintDC dc(this); // device context for painting
  50. // TODO: 在此处添加消息处理程序代码
  51. // 不为绘图消息调用 CWnd::OnPaint()
  52. CDC dcImage;
  53. if (!dcImage.CreateCompatibleDC(&dc))
  54. return;
  55. BITMAP bm;
  56. m_bitmap.GetBitmap(&bm);
  57. // Paint the image.
  58. CBitmap* pOldBitmap = dcImage.SelectObject(&m_bitmap);
  59. dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dcImage, 0, 0, SRCCOPY);
  60. dcImage.SelectObject(pOldBitmap);
  61. }
  62. void CSplashWnd::OnTimer(UINT_PTR nIDEvent)
  63. {
  64. // TODO: 在此添加消息处理程序代码和/或调用默认值
  65. DestroyWindow();
  66. AfxGetMainWnd()->UpdateWindow();
  67. CWnd::OnTimer(nIDEvent);
  68. }

其中消隐时间的设置为你喜欢的数值。

接下来,只需在MFC工程中的CMainFrame类中添加函数OnCreate,并在函数定义中添加语句CSplashWnd::ShowSplashScreen(this);

[cpp] view plain copy
  1. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  2. {
  3. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  4. return -1;
  5. // TODO:  在此添加您专用的创建代码
  6. CSplashWnd::ShowSplashScreen(this);
  7. return 0;
  8. }

好了,你的程序启动logo做好了,编译运行吧,少年!~~

from: http://blog.csdn.net/yang_xian521/article/details/7322619

用MFC制作程序启动logo相关推荐

  1. android 程序 读logo,制作Android启动Logo

    一.去除Embedded Linux 的开机光标: 在内核的当前目录进入到drivers/video/console/fbcon.c文件 将static void fb_flashcursor(voi ...

  2. android开机自启动应用日志标志,制作Android启动Logo

    http://blog.chinaunix.net/uid-26119896-id-4383872.html 一.去除Embedded Linux 的开机光标: 在内核的当前目录进入到drivers/ ...

  3. java制作程序启动进度窗口

    运行效果如下: 代码如下: import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension;import ...

  4. 制作.ppm格式Linux内核启动logo

    在做的产品中,采用默认的小企鹅做logo肯定是不行的,所以一定要替换个像样的企业logo图片! 以前做过Linux启动Logo,时间太久,给忘了,所以再从新研究下. 经过在网上的搜索,和实际验证,制作 ...

  5. linux开机自动打开全屏,如何修改Linux开机启动logo并使其全屏显示?

    1.制作开机启动logo的图片(my_image.png  ==>  logo_linux_clut224.ppm),要求图片的分辨率要和屏幕大小一致. 使用如下命令: pngtopnm my_ ...

  6. VC四种程序启动画面的制作方法

    使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序):二是可以用来显示软件名称和版权等提示信息.怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法,前三种适用于基于文档的应 ...

  7. MFC的exe启动时提示应用程序配置不正确,应用程序未能启动错误

    MFC的exe启动时提示应用程序配置不正确,应用程序未能启动错误 老姐笔记本中毒太深于病入膏肓,无奈迫写一程序"曲线救国".刚启动自己写的程序就出现应用程序配置不正确,应用程序未能 ...

  8. 玩转mini2440开发板之【制作和修改linux启动logo图片】

    今天玩一玩linux启动logo图片的修改和制作. 对于我手头的mini2440开发板,其实厂家友善之臂原本是有配一个转换工具的,用起来会比较简单.但是,它那个工具仅针对32位的Fedora 9系统开 ...

  9. MFC制作Windows画图程序(二)

    继<MFC制作Windows画图程序(一)> 文章目录 7 颜色填充功能 8 选择画笔颜色 9 设置画笔粗细 10 将绘制出来的图形保存的实现 11 添加位图 7 颜色填充功能 油漆桶功能 ...

最新文章

  1. 使用Numpy和Scipy处理图像
  2. linux的文件io操作(转)
  3. Asp.Net Core 中的“虚拟目录”
  4. Summary Day30
  5. Linux Shell 脚本基础
  6. LeetCode每日一题——串联字符串的最大长度
  7. 使用ubuntu自带的文件管理器通过ssh管理远程文件
  8. CIE Radar 2006(ICR2006)开始征文了
  9. VS2015 VisualSVN的 破解方法
  10. python怎么安装requests包_python怎么安装requests库
  11. TI DSP TMS320C66x学习笔记之TI Imglib库相关函数(四)
  12. 将平板、手机等作为电脑的副屏幕
  13. 西游记中四大菩萨的坐骑
  14. 腾讯云账号注册方法介绍
  15. springboot yml语法 ${} 用法
  16. 10.3国庆作业(UART实验)
  17. Filter Listener
  18. 十余年软件开发经历,经验总结和程序一览(涉及Socket、WPF、vc++、CAD、图像、GIS)
  19. ICMP协议是什么协议?
  20. TBtools最新版(2023.2.10)

热门文章

  1. 克服过拟合和提高泛化能力的20条技巧和诀窍
  2. 植入“电商基因” 传统产业搭上网络快车[图]
  3. [搜索]Trie树的一种实现
  4. 计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?
  5. 辽宁师范大学java_辽宁师范大学心理学院
  6. IntelliJ IDEA版本和junit版本不适配
  7. 系统优化怎么做-SQL优化
  8. Redis基本数据的的常见命令操作
  9. “http://127.0.0.1:8888' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header”
  10. oracle var/tmp,关于/var/tmp/.oracle 目录(ZT)