中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual C++ > 综合文章
在VC++中利用消息制作启动封面
作者:未知 时间:2005-08-07 20:56 出处:编程爱好者网站 责编:chinaitpower
              摘要:在VC++中利用消息制作启动封面
1.用Appwizard创建一个空的SDI工程Splash;

2.导入用作启动封面的图片;

(1)在创建的新工程Splash中,选择ResourceView面板打开资源编辑器。右击"Splash resources",在打开的快捷菜单中选择“Insert”命令,选择其中的“Bitmap”选项,然后单击“Import”按钮,准备导入用做启动封面的BMP图形文件。

(2)在ResourceView面板中,右击刚导入的“IDB_MITMAP1”位图资源,在打开的快捷菜单中选择“properties”命令,将ID值改为便于理解与记忆的“ID_SPLASH”。

3.新建一个对话框资源,在其中添加导入的位图;

(1)在ResourceView面板中,右击“Dialog”资源。在打开的快捷菜单中选择“Insert Dialog”命令,新建一个对话框资源。删除对话框中的“OK”“Cancel”按钮,选择自己喜欢的对话框风格.

(2)在对话框资源中添加一个Picture控件,打开其"Picture properties"属性对话框.选择"General"标签,在"Tpye"下拉框中选择"Bitmap"选项,在"Image"下拉框中选择前面导入的位图资源的ID值"IDB_SPLASH".将对话框的资源的大小调整为和Picture控件大小相同.

(3)右击资源编辑器,在打开的快捷菜单中选择"ClassWizard"命令,弹出"Adding a class"对话框,为新建的对话框资源添加一个新类.在"New Class"对话框的"Name"文本框中输入对话框类名"CsplashDlg",然后顺序单击"OK"按钮关闭"New Class"和"ClassWizard"对话框.

4.编写代码,实现启动封面的功能;

(1)添加一个指针成员变量"*splash".在工程工作区选择"ClassView"面板,展开类树,右击"CMainFrame"类,在弹出的快捷菜单中选择"Add Member Variable..." 命令,打开"Add Member Variable"对话框,然"Variable Type"文本框中输入"CsplashDlg",在"Variable Name"文本框中输入"splash".单击"OK"按钮关闭"Add Member Variable"对话框,在Splash.cpp文件中添加如下包含语句:#include "SplashDlg.h"

(2) 选择"View"下拉菜单中的"ClassWizard"命令,打开"ClassWizard"对话框.选择"Message Maps"标签,在"Class name"下拉框中选择"CMainFrame"类,然后在"Messages:"列表框中选择消息"WM_TIMER".单击"Add Function"按钮添加"OnTimer"函数.

(3)双击"Member Function"列表框中的"OnTimer"函数,编辑该函数.函数清单如下:

void CMainFrame::OnTimer(UINT nIDEvent)
{
if (nIDEvent == 1)
{if (splash->IsWindowVisible())
{//启动封面设置为当前活动窗口;
splash->SetActiveWindow();
splash->UpdateWindow();
//启动封面停留时间;
Sleep(2000);
splash->SendMessage(WM_CLOSE);
}
else
{//应用程序窗口设置为当前活动窗口;
SetActiveWindow();
//清除WM_TIMER事件;
KillTimer(1);
}
}
//CFrameWnd::OnTimer(nIDEvent);
}

(4)在CMainFrame类的OnCreate函数中添加SetTimer函数,并添加显示启动封面的程序代码.修改后的OnCreate函数清单如下:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//开始显示启动封面;
SetTimer(1,5,NULL);//添加ID号为1 的WM_TIMER事件,响应频率不宜过大;
splash = new CSplashDlg();
//可以添加播放WAV声音的代码;
//sndPlaySound("welcome.wav",SND_ASYNC);
//PlaySound("welcome.wav",NULL,SND_ASYNC);

splash->Create(IDD_DIALOG1);
splash->ShowWindow(SW_SHOW);
splash->UpdateWindow();

if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}

if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}

// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);

//应用程序窗口居中显示;
CenterWindow();

return 0;
}

编译,链接后运行应用程序,显示添加的启动封面.(该程序在VC++ 6.0 中以成功的通过) 

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有