用MFC制作程序启动logo
完了,这次土鳖了,介绍个非常过时的东西,其实就是自己收藏一下,怕以后想用的时候自己忘了。
直接进入正题,首先用ps等工具做一个自己喜欢的程序启动的logo位图,我这里制作的logo大小为500*313,比例为黄金比例,看上去很舒服。
新建mfc工程,把制作好的logo位图添加的资源中去,资源ID号设置为IDB_SPLASH。
新建类CSplashWnd,
- #pragma once
- #include "afxwin.h"
- class CSplashWnd :
- public CWnd
- {
- public:
- CSplashWnd(void);
- ~CSplashWnd(void);
- CBitmap m_bitmap;
- static void ShowSplashScreen(CWnd* pParentWnd = NULL);
- protected:
- BOOL Create(CWnd* pParentWnd = NULL);
- static CSplashWnd* c_pSplashWnd;
- public:
- DECLARE_MESSAGE_MAP()
- afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
- afx_msg void OnPaint();
- afx_msg void OnTimer(UINT_PTR nIDEvent);
- };
为各成员函数添加代码:
- #include "StdAfx.h"
- #include "SplashWnd.h"
- #include "resource.h"
- CSplashWnd* CSplashWnd::c_pSplashWnd;
- BEGIN_MESSAGE_MAP(CSplashWnd, CWnd)
- ON_WM_CREATE()
- ON_WM_PAINT()
- ON_WM_TIMER()
- END_MESSAGE_MAP()
- CSplashWnd::CSplashWnd(void)
- /*: c_pSplashWnd(NULL)*/
- {
- }
- CSplashWnd::~CSplashWnd(void)
- {
- }
- void CSplashWnd::ShowSplashScreen(CWnd* pParentWnd)
- {
- c_pSplashWnd = new CSplashWnd;
- if (!c_pSplashWnd->Create(pParentWnd))
- delete c_pSplashWnd;
- else
- c_pSplashWnd->UpdateWindow();
- }
- BOOL CSplashWnd::Create(CWnd* pParentWnd)
- {
- if (!m_bitmap.LoadBitmap(IDB_SPLASH)) /*加载位图资源,需在资源文件中添加*/
- return FALSE;
- BITMAP bm;
- m_bitmap.GetBitmap(&bm);
- return CreateEx(0,
- AfxRegisterWndClass(0, AfxGetApp()->LoadStandardCursor(IDC_ARROW)),
- NULL, WS_POPUP | WS_VISIBLE, 0, 0, bm.bmWidth, bm.bmHeight, pParentWnd->GetSafeHwnd(), NULL);
- return 0;
- }
- int CSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (CWnd::OnCreate(lpCreateStruct) == -1)
- return -1;
- // TODO: 在此添加您专用的创建代码
- // Center the window.
- CenterWindow();
- // Set a timer to destroy the splash screen.
- SetTimer(1, 1000, NULL); /*设置消隐时间*/
- return 0;
- }
- void CSplashWnd::OnPaint()
- {
- CPaintDC dc(this); // device context for painting
- // TODO: 在此处添加消息处理程序代码
- // 不为绘图消息调用 CWnd::OnPaint()
- CDC dcImage;
- if (!dcImage.CreateCompatibleDC(&dc))
- return;
- BITMAP bm;
- m_bitmap.GetBitmap(&bm);
- // Paint the image.
- CBitmap* pOldBitmap = dcImage.SelectObject(&m_bitmap);
- dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dcImage, 0, 0, SRCCOPY);
- dcImage.SelectObject(pOldBitmap);
- }
- void CSplashWnd::OnTimer(UINT_PTR nIDEvent)
- {
- // TODO: 在此添加消息处理程序代码和/或调用默认值
- DestroyWindow();
- AfxGetMainWnd()->UpdateWindow();
- CWnd::OnTimer(nIDEvent);
- }
其中消隐时间的设置为你喜欢的数值。
接下来,只需在MFC工程中的CMainFrame类中添加函数OnCreate,并在函数定义中添加语句CSplashWnd::ShowSplashScreen(this);
- int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
- {
- if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
- return -1;
- // TODO: 在此添加您专用的创建代码
- CSplashWnd::ShowSplashScreen(this);
- return 0;
- }
好了,你的程序启动logo做好了,编译运行吧,少年!~~
from: http://blog.csdn.net/yang_xian521/article/details/7322619
用MFC制作程序启动logo相关推荐
- android 程序 读logo,制作Android启动Logo
一.去除Embedded Linux 的开机光标: 在内核的当前目录进入到drivers/video/console/fbcon.c文件 将static void fb_flashcursor(voi ...
- android开机自启动应用日志标志,制作Android启动Logo
http://blog.chinaunix.net/uid-26119896-id-4383872.html 一.去除Embedded Linux 的开机光标: 在内核的当前目录进入到drivers/ ...
- java制作程序启动进度窗口
运行效果如下: 代码如下: import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension;import ...
- 制作.ppm格式Linux内核启动logo
在做的产品中,采用默认的小企鹅做logo肯定是不行的,所以一定要替换个像样的企业logo图片! 以前做过Linux启动Logo,时间太久,给忘了,所以再从新研究下. 经过在网上的搜索,和实际验证,制作 ...
- linux开机自动打开全屏,如何修改Linux开机启动logo并使其全屏显示?
1.制作开机启动logo的图片(my_image.png ==> logo_linux_clut224.ppm),要求图片的分辨率要和屏幕大小一致. 使用如下命令: pngtopnm my_ ...
- VC四种程序启动画面的制作方法
使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序):二是可以用来显示软件名称和版权等提示信息.怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法,前三种适用于基于文档的应 ...
- MFC的exe启动时提示应用程序配置不正确,应用程序未能启动错误
MFC的exe启动时提示应用程序配置不正确,应用程序未能启动错误 老姐笔记本中毒太深于病入膏肓,无奈迫写一程序"曲线救国".刚启动自己写的程序就出现应用程序配置不正确,应用程序未能 ...
- 玩转mini2440开发板之【制作和修改linux启动logo图片】
今天玩一玩linux启动logo图片的修改和制作. 对于我手头的mini2440开发板,其实厂家友善之臂原本是有配一个转换工具的,用起来会比较简单.但是,它那个工具仅针对32位的Fedora 9系统开 ...
- MFC制作Windows画图程序(二)
继<MFC制作Windows画图程序(一)> 文章目录 7 颜色填充功能 8 选择画笔颜色 9 设置画笔粗细 10 将绘制出来的图形保存的实现 11 添加位图 7 颜色填充功能 油漆桶功能 ...
最新文章
- 使用Numpy和Scipy处理图像
- linux的文件io操作(转)
- Asp.Net Core 中的“虚拟目录”
- Summary Day30
- Linux Shell 脚本基础
- LeetCode每日一题——串联字符串的最大长度
- 使用ubuntu自带的文件管理器通过ssh管理远程文件
- CIE Radar 2006(ICR2006)开始征文了
- VS2015 VisualSVN的 破解方法
- python怎么安装requests包_python怎么安装requests库
- TI DSP TMS320C66x学习笔记之TI Imglib库相关函数(四)
- 将平板、手机等作为电脑的副屏幕
- 西游记中四大菩萨的坐骑
- 腾讯云账号注册方法介绍
- springboot yml语法 ${} 用法
- 10.3国庆作业(UART实验)
- Filter Listener
- 十余年软件开发经历,经验总结和程序一览(涉及Socket、WPF、vc++、CAD、图像、GIS)
- ICMP协议是什么协议?
- TBtools最新版(2023.2.10)
热门文章
- 克服过拟合和提高泛化能力的20条技巧和诀窍
- 植入“电商基因” 传统产业搭上网络快车[图]
- [搜索]Trie树的一种实现
- 计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?
- 辽宁师范大学java_辽宁师范大学心理学院
- IntelliJ IDEA版本和junit版本不适配
- 系统优化怎么做-SQL优化
- Redis基本数据的的常见命令操作
- “http://127.0.0.1:8888' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header”
- oracle var/tmp,关于/var/tmp/.oracle 目录(ZT)