VC/MFC如何添加启动界面
2015-05 转自 香远益清原文VC/MFC如何添加启动界面
1、基于框架类的应用程序添加启动画面的步骤(利用组件库中的Splash Screen组件生成Splash1.cpp 和Splash1.h 这两个文件)
(1)用Photoshop等制作启动画面图像,保存为bmp格式。
(2)用Appwizard建一个基于单文档的工程Splash。
(3)在资源中插入位图资源
打开VC++的资源编辑器,用鼠标右键单击Resources文件夹,选择Import命令,插入所制作的位图。如果位图超过256色,VC会弹出一个对话框,提示位图已经插入但不能在位图编辑器中显示,确定即可。将位图ID改为IDB_SPLASH。
(4)添加Splash
Screen控件
①选择菜单“project”/“Add To Project”/“Conponents and Controls”打开对话框,在列表框中双击“Visual C++ Conponents”选项,选择“Splash Screen”控件,然后单击“Insert”。
②确认或修改类名和位图资源ID,单击OK确认。
③编译、连接,漂亮的启动画面就显示出来了。
(5)如果需要改变启动画面的停留时间,就修改SetTimer()函数的第二个参数,默认是750 毫秒。该函数所在位置:
int CSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
// Set a timer to destroy the splash screen.
SetTimer(1, 2000, NULL); //修改第二个参数以调整画面停留时间
return 0;
}
这样就生成了Splash1.cpp 和Splash1.h 这两个文件
2、制作基于对话框的应用程序启动画面
(1)建立基于对话框的工程Cover。
(2)文件移植
①将Splash1.cpp 和Splash1.h 两个文件从步骤一建立的工程拷贝到Cover工程中,并且分别加入到Source Files和Header Files中;
②导入位图文件到工程的资源中,改ID为IDB_SPLASH。
(3)修改代码,实现启动画面的调用
①添加CCoverApp的InitInstance() 函数代码
#include "Splash1.h" //加在Cover.cpp文件的头文件调用部位
BOOL CCoverApp::InitInstance()
{
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
CSplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);
...
}
②使用ClassWizard 添加OnCreate()函数到对话框类CCoverDlg中,并修改代码#include
"Splash1.h" //加在CoverDlg.cpp文件的头文件调用部位
int CCoverDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
...
CSplashWnd::ShowSplashScreen(this);
//显示启动画面
...
}
3、使得启动画面消失后再显示主程序
①在CCoverDlg类中添加WM­_TIMER消息响应函数
void
CCoverDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or
call default
this->MoveWindow(300,300,600,400);
CDialog::OnTimer(nIDEvent);
}
② 在intCCoverDlg::OnCreate(LPCREATESTRUCT
lpCreateStruct)中添加如下代码:
CSplashWnd::ShowSplashScreen(this);
this->MoveWindow(0,0,0,0);
this->SetTimer(1,2000,NULL);//注意这个2000一点要等于步骤1中的2000
return 0;
③在void CCoverDlg::OnPaint()的末尾添加如下代码:
this->KillTimer(1);
相关文章
- Linux环境下如何计算CPU占用率
- 【调试】Idea如何远程debug之SpringBoot jar包启动
- 【调试】Idea如何远程debug之tomcat war包启动
- 如何搭建sshpermissions工程
- Java8的flatMap如何处理有异常的函数
- PCB上 如何显示 汉字
- 计算机是如何启动的?
- ASP.NET Core管道详解[6]: ASP.NET Core应用是如何启动的?[下篇]
- 如何以 mock server 的方式本地启动 SAP UI5 应用,使它不连接服务器端 OData 服务
- SAP Spartacus 如何借助env-cmd 实现 B2B 和 B2C 功能启动的无缝切换
- 如何使用SAP CRM增强工具AET创建Table表格类型的增强
- Cloud for Customer的前端UI5是如何启动的
- 使用 cf push 部署应用到 SAP BTP 后启动失败 start unsuccessful 该如何处理
- 如何确保sublime text每次启动时不会自动打开以前打开的文档
- Atitit 健康减肥与软件健康减肥的总结 attilax著 1. 几大最佳实践减肥行为1 1.1. 控制饮食分量用小碗 小盘子 小餐具1 1.2. 软件如何减肥,控制资源占有率,比如体积 打包
- 如何找出 SAP Fiori Launchpad 里点击 tile 之后,读取业务数据调用的是哪个 SAP 后台系统的 OData 服务试读版
- 【Java实战】泄露用户隐私被罚巨款?系统被攻击?如何避免?
- QT 5.15.2 的 QML 项目启动相机后报错如何解决?
- 如何入门Python爬虫?
- OpenHarmony移植案例:如何适配服务启动引导部件bootstrap_lite
- 如何查看 Docker 容器 run 启动参数
- Linux如何查看进程、杀死进程、启动进程等常用命令
- Spring Boot系列——Spring Boot如何启动
- 如何构建debian 包
- github用相对路径显示图片_GitHub 中 readme 如何添加图片
- 使用Learner Lab - 如何启动、管理和监控Amazon EC2实例以及调整其大小