在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);
}

时间: 2024-12-27 03:36:46

在VC++中利用消息制作启动封面的相关文章

VC中利用FLASH制作图声并茂的动画程序

前言: FLASH是一种功能强大的矢量动画,可以制作出各种华丽的电影效果,应用非常广泛!这也给予我们一个启迪:如果在VC程序中能够播放FLASH动画,将为程序增色不少,而且许多原本不易实现的功能,现在都可以轻松实现! 像金山词霸的安装程序主控界面就利用了FLASH,效果相当好.本文中笔者将制作一个完整的多媒体软件,将一些关键性技术介绍给大家,并提供全部代码供大家参考. 本文使用到的关键性技术: (1)利用VB制作MS AGENT播放模块. (2)将该播放模块.FLASH动画文件SWF与其它必要资

深度解析VC中的消息(中)

队列消息和非队列消息 从消息的发送途径来看,消息可以分成2种:队列消息和非队列消息.消息队列由可以分成系统消息队列和线程消息队列.系统消息队列由Windows维护,线程消息队列则由每个GUI线程自己进行维护,为避免给non-GUI现成创建消息队列,所有线程产生时并没有消息队列,仅当线程第一次调用GDI函数数系统给线程创建一个消息队列.队列消息送到系统消息队列,然后到线程消息队列:非队列消息直接送给目的窗口过程. 对于队列消息,最常见的是鼠标和键盘触发的消息,例如WM_MOUSERMOVE,WM_

VC中利用多线程技术实现线程之间的通信

文章来源:[url]http://www.programfan.com/article/showarticle.asp?id=2951[/url] 当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义.现在的大型应用软件无一不是多线程多任务处理,单线程的软件是不可想象的.

VC++中利用MSXML解析XML文档

c++|xml 四.程序实现 下面通过一个具体的实例来说明在VC++中如何利用MSXML解析XML文档. (1)源XML文档(xmlfile.xml)如下: <?xml version="1.0" encoding="GB2312"?> <Device id="10041" name="设备1"> <Type>13</Type> <TypeName>保护</Ty

深度解析VC中的消息(下)

前面,我们分析了消息的基本理论和基本的函数及用法,接下来,我们将进一步讨论消息传递在MFC中的实现. MFC消息的处理实现方式 初看MFC中的各种消息,以及在头脑中根深蒂固的C++的影响,我们可能很自然的就会想到利用C++的三大特性之一:虚拟机制来实现消息的传递,但是经过分析,我们看到事情并不是想我们想象的那样,在MFC中消息是通过一种所谓的消息映射机制来处理的. 为什么呢?在潘爱民老师翻译的<Visual C++技术内幕>(第4版)中给出了详细的原因说明,我再简要的说一遍.在CWnd类中大约

Word中利用字体制作各种实用标志

在Word文档的编辑中,有时需要做一些标志符,例如停车场标志.禁止吸烟标志等,怎么办?利用某些字体来制作既快又方便. 1.启动WORD,设置好页面属性.单击菜单"插入→符号",在"字体"下拉框中选择"Webdings",在中间的符号区就可发现"禁止吸烟"的标志,选定该符号,单击"插入",最后按"关闭"按钮. 2.在文档中选定插入的"禁止吸烟"标志,调整其大小颜色等,将

Word中利用字体制作各种实用标志的方法

在Word文档的编辑中,有时需要做一些标志符,例如停车场标志.禁止吸烟标志等,怎么办?利用某些字体来制作既快又方便. 1.启动WORD,设置好页面属性.单击菜单"插入→符号",在"字体"下拉框中选择"Webdings",在中间的符号区就可发现"禁止吸烟"的标志,选定该符号,单击"插入",最后按"关闭"按钮. 2.在文档中选定插入的"禁止吸烟"标志,调整其大小颜色等,将

Android中利用SurfaceView制作抽奖转盘的全流程攻略_Android

一.概述今天给大家带来SurfaceView的一个实战案例,话说自定义View也是各种写,一直没有写过SurfaceView,这个玩意是什么东西?什么时候用比较好呢? 可以看到SurfaceView也是继承了View,但是我们并不需要去实现它的draw方法来绘制自己,为什么呢? 因为它和View有一个很大的区别,View在UI线程去更新自己:而SurfaceView则在一个子线程中去更新自己:这也显示出了它的优势,当制作游戏等需要不断刷新View时,因为是在子线程,避免了对UI线程的阻塞. 知道

Android中利用SurfaceView制作抽奖转盘的全流程攻略

一.概述 今天给大家带来SurfaceView的一个实战案例,话说自定义View也是各种写,一直没有写过SurfaceView,这个玩意是什么东西?什么时候用比较好呢? 可以看到SurfaceView也是继承了View,但是我们并不需要去实现它的draw方法来绘制自己,为什么呢? 因为它和View有一个很大的区别,View在UI线程去更新自己:而SurfaceView则在一个子线程中去更新自己:这也显示出了它的优势,当制作游戏等需要不断刷新View时,因为是在子线程,避免了对UI线程的阻塞. 知