汇编教程:启动画面

上一章我们学习了位图的使用.在这一章我们要用上帝赋予我们的创造力来融会贯通上一章我们学到的知识.那就是研究如何用位图来创建启动画面.

理论

首先,我们先要搞清楚什么是启动画面.举个简单的例子:我们启动某些作的专业一点的程序时(比如Netscape,Adobe Acrobat等)会先跳出一个启动画面.上面通常有一些版权信息,版本号等.与此同时,程序后台正做着一些程序的加载或初始化工作.这个启动画面有别于一般的窗口.它没有标题栏,没有系统菜单,也没有边框.只有一张位图在屏幕上显示一会儿,然后消失 .在这一章我们来试试自己做一个.

第一步你可能会想到把要显示的位图包含到资源文件中去.但是这样做有一个缺点.你的程序只在启动的时候显示这张位图,可是它却至始至终存在于你的内存中,直到你把程序关掉.这不能不说是对内存的极大浪费.好办法是:创建一个"资源"DLL(动态连接库)来包含位图和它独特的显示代码.这样,你就可以在想显示启动画面的时候加载他,用完了就卸载它.所以,我们的程序需要2个模块:主程序和启动画面DLL.我们要把位图放到这个DLL的资源中去.

基本步骤如下:

把位图作为一个位图资源放到DLL中去.

主程序调用 LoadLibrary 把 dll 加载到内存中去.

DLL 被调用后,它会建立一个定时器用于管理启动画面显示的时间.然后,注册并创建一个没有 标题和边框的窗口.同时在窗口的客户区显示位图.

等启动画面的显示时间长度到达你预先的设定值,启动画面消失,控制权回到主程序手中.

主程序调用 FreeLibrary 从内存中卸载 DLL .然后,做它该做的事去.

下面我们来研究细节部分

加载/卸载 DLL

你可以用 LoadLibrary 灵活的加载一个 DLL ,它的格式如下:

LoadLibrary proto lpDLLName:DWORD

它只有一个参数: 你想要加载的 DLL 的名称所在的地址.调用成功返回指向该DLL模块的句柄,反之返回NULL.

要卸载 DLL, 则调用 FreeLibrary:

FreeLibrary proto hLib:DWORD

它也只有一个参数: 你想要卸载的 DLL 模块的句柄(通常就是上面那个函数返回的啦).

怎样使用定时器

首先, 你要用 SetTimer 创建一个定时器:

SetTimer proto hWnd:DWORD, TimerID:DWORD, uElapse:DWORD, lpTimerFunc:DWORD

hWnd接受这个定时器消息的窗口的句柄.如果,你的定时器不需要窗口接受它的消息,你也可以 用NULL作为参数

TimerID定时器的 ID 值. 由你自己定义.

uElapse 定时器定的时间.以ms(千分之一秒)为单位.

lpTimerFunc 处理该定时器消息的函数所在的地址.如果你用NULL作为该参数,那么定时器的消息会被送给 hWnd 参数所指定的窗口.

SetTimer 如果成功则返回定时器的 ID 否则返回 NULL. 所以最好不要把定时器的ID设为0(Pheadnius:NULL代表0, 记得吗?).

你可以用2种方法创建定时器:

如果你有一个窗口并且定时器把消息传给这个窗口.那么你需要把所有的4个参数都传送给 Settimer 函数 (lpTimerFunc参数必须为NULL).

如果你没有窗口或者你不想让窗口处理定时器的消息,那么你必须在窗口句柄中传送一个NULL.同时你要指定用于处理定时器消息的函数的地址.

时间: 2024-10-28 07:59:14

汇编教程:启动画面的相关文章

Android编程之简单启动画面实现方法_Android

本文实例讲述了Android简单启动画面实现方法.分享给大家供大家参考,具体如下: 每个Android应用程序启动之后都会出现一个Splash启动界面,显示产品LOGO.公司LOGO或者开发者信息.如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥的时间,提高用户体验. 1. splash.xml布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&q

Android简单实现启动画面的方法_Android

本文实例讲述了Android简单实现启动画面的方法.分享给大家供大家参考,具体如下: 核心代码: package com.demo.app; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; public class SplashActivity extends Activity { private final int S

Android简单实现启动画面的方法

本文实例讲述了Android简单实现启动画面的方法.分享给大家供大家参考,具体如下: 核心代码: package com.demo.app; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; public class SplashActivity extends Activity { private final int S

视觉设计:小小启动画面蕴藏着很多讲究

文章描述:小小的启动画面到底有什么学问,它对产品用户体验都有哪些影响?本篇文章做了一些分析和总结,希望对你有帮助. 需要点击图标,等待应用程序启动.在这个简单的过程中,启动画面会呈现在我们眼前.有时候它让我们眼前一亮,有时候它会让我们感到困惑,有时候它会让我们感到厌倦--小小的启动画面到底有什么学问,它对产品用户体验都有哪些影响?本篇文章做了一些分析和总结,希望对你有帮助. 什么是启动画面当用户启动一个操作系统.软件或者应用程序的时候,首先出现的承载产品标识及相关信息的图形界面.例如,Offic

用C#给程序加启动画面并只允许一个应用程序实例运行

程序 涉及类: 1. 启动画面类: public class SplashForm : System.Windows.Forms.Form { private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label lbl_version; /// <summary> /// 必需的设计器变量. /// &

ios编程:iphone的启动画面

一种方法是,直接在应用程序根目录下放置一个default.png图片作为程序的启动画面. 下面是另一种方法,转自: http://blogold.chinaunix.net/u1/49717/showart_2180128.html 今天,我将介绍怎样为你的程序加一些"铃和哨"(注:指一些附加的花哨的东西)是你 的游戏显得更完整.首先,我们为游戏增加一个启动页面. 创建启动页面 我们加入的启动页面将淡出到游戏主屏幕.你可以下载此图像加入到项 目的Resources(资源)文件夹中. 请

vc.net中实现启动画面淡入淡出

找了半天没找实现启动画面来个淡入淡出的代码,只好自己写了个,呵呵,还不错拿给大家看看. #undef WINVER //取消原有版本定义,重新定义版本 #define WINVER 0x5000 //为了使AnimateWindow函数可用 #include <afxwin.h> 然后在相关文件分别加入OnCreate,OnClose,OnEraseBkgnd和OnTimer消息函数.记得在相关构析函数内加入 : SetTimer(1, 3000, NULL); //设定定时器1,定时3秒 O

VC简易方法淡入淡出启动画面

一日心血来潮,想给启动画面来个淡入淡出,于是去搜索查了半天,无果.-_-b,但知道了AnimiateWindow 这个函数.好吧 ,让我们开始吧^^.首先,请在需要淡入淡出窗口的cpp文件或者stdafx.h加入下列代码(注意要加在#include前面哦,否则没有作用哦). #undef WINVER //取消原有版本定义,重新定义版本 #define WINVER 0x5000 //为了使AnimateWindow函数可用 #include <afxwin.h> 然后在相关文件分别加入OnC

VC四种程序启动画面的制作方法

摘要:本文提供了四种启动画面制作方法. 使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序):二是可以用来显示软件名称和版权等提示信息.怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法,前三种适用于基于文档的应用程序,第四种适用于基于对话框的应用程序. 1.利用组件库中的Splash Screen组件实现 (1)用Photoshop等制作启动画面图像,保存为bmp格式. (2)用Appwizard建一个基于单文档的工程Splash. (3)在资源中插入位图资源 打开