VC.NET制作启动屏幕的新方法

分类: VC.NET   出处:iocblog整理  更新时间:2008-10-19   添加到收藏  


  在利用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]