VC.NET制作启动屏幕的新方法
在利用vc++.net编程过程中,遇到制作启动屏幕的问题,几经试验,得出一种方便简单的制作方法。
基本原理是利用对话框窗口的特性,在启动时首先创建对话框,设置一个获得位图文件的句柄,利用picture控件的setbitmap(hbitmap hbitmap)方法,使位图文件充满整个picture控件窗口,最后设置定时器,整个启动屏幕就制作完成。
下面介绍具体实现步骤。
1. 打开vs.net的开发环境,新建vc++.net中的mfc应用程序,输入工程名称mysample,点击“确定”,“完成”;
2. 打开资源视图,添加对话框,更改id为id_dialog_splash,设置对话框center属性为true,border属性为“无”;
3. 在对话框中添加picture控件,设置picture控件的id号为id_pic,type属性为“位图”,center image属性为true,然后调整标尺使对话框没有外框,调整对话框的大小以适应启动屏幕的要求,调整picture的宽高使其充满整个对话框窗口;
4. 双击对话框窗口,弹出类向导对话框,在类名中键入csplash,选择基类为cdialog,点击确定,定义控件picture的控件变量为m_pic;
5. 在csplash类中重载oninitdialog()函数,添加消息wm_char,wm_timer,wm_lbuttonup,wm_mbuttonup,wm_rbuttonup;
6. 在oninitdialog()函数中添加代码如下:
bool csplash::oninitdialog()
{
cdialog::oninitdialog();
//设置启动窗口背景,在整个窗口中充满位图
crect lrect;
m_pic.getclientrect(&lrect);//得到picture控件的窗口大小
lrect.normalizerect();
//设置位图句柄
hbitmap hbitmap=(hbitmap)loadimage(null,"splash.bmp",//更改你喜欢的位图文件
image_bitmap,lrect.width(),lrect.height(),
lr_loadfromfile|lr_createdibsection);
m_pic.setbitmap(hbitmap);
//设置定时器
settimer(1,500,null);
return true;
}
7. 在ontimer(uint nidevent) 函数中添加代码如下:
void csplash::ontimer(uint nidevent)
{
static int i;
i++;
if(i > 3)
{
//销毁定时器
killtimer(1);[来源 www.iocblog.net]
this->onok();
}
cdialog::ontimer(nidevent);
}
8. 在onlbuttonup,onlbuttonup,onlbuttonup,onchar函数中加入以下代码:
{
killtimer(1);
this->onok();
}
9. 在mysample.cpp中引入头文件
#include "splash.h"
在initinstance()函数中加入代码:
bool cmysampleapp::initinstance()
{
…
afxenablecontrolcontainer();
csplash splash;
splash.domodal();
…
}
[来源 www.iocblog.net]