windows sdk编程系列文章22 ---- 启动画面.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:9 大小:48KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

windows sdk编程系列文章22 ---- 启动画面.doc

windowssdk编程系列文章22----启动画面.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

windowssdk编程系列文章----启动画面2008-04-2323:27上一章我们学习了位图的使用.在这一章我们要用上帝赋予我们的创造力来融会贯通上一章我们学到的知识.那就是研究如何用位图来创建启动画面.理论:首先,我们先要搞清楚什么是启动画面.举个简单的例子:我们启动某些作的专业一点的程序时(比如Netscape,AdobeAcrobat等)会先跳出一个启动画面.上面通常有一些版权信息,版本号等.与此同时,程序后台正做着一些程序的加载或初始化工作.这个启动画面有别于一般的窗口.它没有标题栏,没有系统菜单,也没有边框.只有一张位图在屏幕上显示一会儿,然后消失.在这一章我们来试试自己做一个.第一步你可能会想到把要显示的位图包含到资源文件中去.但是这样做有一个缺点.你的程序只在启动的时候显示这张位图,可是它却至始至终存在于你的内存中,直到你把程序关掉.这不能不说是对内存的极大浪费.好办法是:创建一个"资源"DLL(动态连接库)来包含位图和它独特的显示代码.这样,你就可以在想显示启动画面的时候加载他,用完了就卸载它.所以,我们的程序需要2个模块:主程序和启动画面DLL.我们要把位图放到这个DLL的资源中去.基本步骤如下:把位图作为一个位图资源放到DLL中去.主程序调用LoadLibrary把dll加载到内存中去.DLL被调用后,它会建立一个定时器用于管理启动画面显示的时间.然后,注册并创建一个没有标题和边框的窗口.同时在窗口的客户区显示位图.等启动画面的显示时间长度到达你预先的设定值,启动画面消失,控制权回到主程序手中.主程序调用FreeLibrary从内存中卸载DLL.然后,做它该做的事去.下面我们来研究细节部分加载/卸载DLL你可以用LoadLibrary灵活的加载一个DLL,它的格式如下:HMODULELoadLibrary(LPCTSTRlpFileName);它只有一个参数:你想要加载的DLL的名称所在的地址.调用成功返回指向该DLL模块的句柄,反之返回NULL.要卸载DLL,则调用FreeLibrary:BOOLFreeLibrary(HMODULEhModule);它也只有一个参数:你想要卸载的DLL模块的句柄(通常就是上面那个函数返回的啦).怎样使用定时器首先,你要用SetTimer创建一个定时器:UINT_PTRSetTimer(HWNDhWnd,UINT_PTRnIDEvent,UINTuElapse,TIMERPROClpTimerFunc);hWnd接受这个定时器消息的窗口的句柄.如果,你的定时器不需要窗口接受它的消息,你也可以用NULL作为参数nIDEvent定时器的ID值.由你自己定义.uElapse定时器定的时间.以ms(千分之一秒)为单位.lpTimerFunc处理该定时器消息的函数所在的地址.如果你用NULL作为该参数,那么定时器的消息会被送给hWnd参数所指定的窗口.SetTimer如果成功则返回定时器的ID否则返回NULL.所以最好不要把定时器的ID设为0你可以用2种方法创建定时器:如果你有一个窗口并且定时器把消息传给这个窗口.那么你需要把所有的4个参数都传送给Settimer函数(lpTimerFunc参数必须为NULL).如果你没有窗口或者你不想让窗口处理定时器的消息,那么你必须在窗口句柄中传送一个NULL.同时你要指定用于处理定时器消息的函数的地址.在这个例子中我们要使用第一种方法.当你设定的时间到了,与定时器相连的窗口会收到WM_TIMER消息.例如,你指定uElapse的值为1000,你的窗口每过一秒都会收到WM_TIMER消息.等到你再也不需要这个定时器了,就用KillTimer来去除定时器.BOOLKillTimer(HWNDhWnd,UINT_PTRuIDEvent);例子:见光盘FirstWindow24;-----------------------------------------------------------------------;主程序;-----------------------------------------------------------------------#include"windows.h"#include"tchar.h"TCHARClassName[]=_T("SplashDemoClass");TCHARLibname[]=_T("Splash.dll");TCHARAppName[]=_T("SplashScreenExample");LRESULTCALLBACKWindowProc(HWNDhwnd,UINTuMsg,WPARA