四种程序启动画面的制作方法(VC)
- 格式:doc
- 大小:33.00 KB
- 文档页数:4
用VC制作初始画面在以前的“电脑工作室”中,我们曾介绍过用VB、VFP制作初始画面,那么,如何在VC中绘制软件初始画面呢?本文将详细介绍其设计步骤。
1. 创建一个SDI或MDI工程。
2. 新建或导入一个ID号为IDB—SPLASH的位图。
3. 从CWnd类派生一个名为CSplashWnd的子类,并添加两个保护成员变量:CBitmap m—bitmap;//初始画面位图staticCSplashWnd c—pSplashWnd;//指向初始画面窗口的指针c—pSplashWnd为静态成员变量,应在类的实现文件(.cpp)开头说明:CSplashWnd CSplashWnd::c—pSplashWnd;4. 向CSplashWnd类中加入一个静态公有成员函数ShowSplashScreen,此函数将被主框架窗口调用:voidCSplashWnd::ShowSplashScreen(CWnd pParentWnd){ //此函数传递的参数是主框架窗口if(c—pSplashWnd!=NULL) return;c—pSplashWnd=new CSplashWnd;if(!c—pSplashWnd->Create(pParentWnd))//创建初始画面窗口delete c—pSplashWnd;elsec—pSplashWnd->UpdateWindow();//显示初始画面窗口}5. 编辑ShowSplashScreen函数中调用的Create函数(保护成员函数):BOOL CSplashWnd::Create(CWnd pParentWnd){if(!m—bitmap.LoadBitmap(IDB—SPLASH))//载入位图return FALSE;BITMAP bm;m—bitmap.GetBitmap(&bm);return CreateEx(0, AfxRegisterWndClass(0, AfxGetApp()->LoadStandardCursor(IDC—WAIT)),NULL, WS—POPUP | WS—VISIBLE, 0, 0, bm.bmWidth, bm.bmHeight,pParentWnd->GetSafeHwnd(), NULL);//创建主框架窗口的子窗口}6. CreateEx将调用OnCreate函数进行窗口的初始化,重载此函数:intCSplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CWnd::OnCreate(lpCreateStruct)==-1)return -1;CenterWindow();SetTimer(1,1000,NULL); //时间控制return 0;}7. 显示窗口时发送WM—PAINT消息,所以我们映射此消息:voidCSplashWnd::OnPaint(){CPaintDCdc(this);CDC dcImage;if(!dcImage.CreateCompatibleDC(&dc)) return;BITMAP bm;m—bitmap.GetBitmap(&bm);CBitmap pOldBitmap=dcImage.SelectObject(&m—bitmap);dc.BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY);dcImage.SelectObject(pOldBitmap);}8. 映射WM—TIMER消息,从而在一定时间后销毁窗口:voidCSplashWnd::OnTimer(UINT nIDEvent){DestroyWindow(); //销毁初始画面窗口AfxGetMainWnd()->UpdateWindow();//刷新主框架窗口}9. 为防止内存溢出,窗口销毁后要释放CSplashWnd对象,为此,我们重载虚拟函数PostNcDestroy,此函数在窗口销毁后调用:voidCSplashWnd::PostNcDestroy(){delete this;}10. 最后,为了显示初始画面,我们在主框架窗口的OnCreate函数最后调用ShowSplashScreen函数,当然别忘了将CSplashWnd的头文件包含进去:CSplashWnd::ShowSplashScreen(this);以上程序在VC++6.0中调试通过。
辽宁省铁岭市委办公室(112000) 宋立波很多大型应用程序都有启动封面,如Word等办公系列软件和VC++等编程软件。
通过启动封面,除了显示应用程序名称和版权等提示画面,还可避免由于应用程序启动前进行大量数据初始化时,用户较长时间的等待,给应用程序增添了许多动态特性和专业规范。
鉴于VC++开发工具应用较广,这里以VC5为例阐述启动封面的一般实现步骤。
1. 制作封面位图制作应用程序启动封面真彩位图,记录位图的高度和宽度,建立所需要的其他声音等文件。
2. 建立应用程序利用FILE->NEW菜单建立名为START的多文档应用程序框架,并利用类向导AppWizard 增加基类为generic CWnd的新类CSplashWnd,将新类的文件改名为splash.h和splash.cp p,并增加WM-CREATB和WM-PAINT的消息映射函数。
3. 定义变量和函数在splash.h中定义如下成员变量和函数:public:BOOL Create(CWnd* pParentWnd=NULL);HANDLE hBitsSrc;LPSTR pBitsSrc;UINT iW,iH;4. 建立启动封面窗口在splash.cpp中增加Create函数,建立显示位图的弹出窗口:#include "windowsx.h" //增加扩展窗口建立……struct{ //位图文件头结构BITMAPINFOHEADER Header;}Info;BOOL CSplashWnd::Create(CWnd* pParentWnd){ //建立显示位图的弹出窗口return CreateEx(0,AfxRegisterWndClass(0,AfxGetApp()-〉LoadStanderdCursor(IDC_ARROW)),NULL,WS_POPUP|WS_VISIBLE,0,0,672,480,pParentWnd-〉GetSafeHwnd(),NULL);}int CsplashWnd::OnCreate(LPCREATESTRUCT lpCreateStruct){……// TODO:Add your specialized creation code hereCenterWindow();//使弹出窗口居中return 0;}5. 完善析构函数在splash.cpp中完善析构函数,为显示位图作准备:CSplashWnd::CSplashWnd() //完善析构函数{iW=672;iH=480; //位图的宽度和高度Info.Header.biSize=sizeof(BITMAPINFOHEADER);Info.header.biWidth=iW;Info.Header.biHeight=iH;Info.Header.biPlanes=1L;Info.Header.biBitCount=24L;hBitsSrc=::GlobalAlloc(GHND,(long)(iW*iH*3));//分配内存pBitsSrc=(LPSTR)::GlobalLock(hBitsSrc);//加锁内存}CSplashWnd::CSplashWnd(){::GlobalUnlock(hBitsSrc);//解锁内存::GlobalFree(hBitsSrc);//释放内存}6. 显示真彩位图在splash.cpp中完善Onpaint函数,实现真彩位图的显示:void CSplashWnd::OnPaint(){……//TODO:Add your messa ge handler code hereCFile fbmp;fbmp.Open("c:\\windows\\EMC1.BMP",CFile::modeRead|CFile::typeBinary|CFile::shareExclusive);//打开文件fbmp.Seek(54,CFile::begin);//位图文件头为54字节fbmp.ReadHuge(pBitsSrc,(long)(iW*iH*3)): //读文件fbmp.Close();//关闭文件HBITMAP hBitmap=::CreateDIBitmap(dc.m_hDC,(BITMAPINFOHEADER FAR*)&(Info.Header),CBM_INIT,pBitsSrc,(LPBITMAPINFO)&Info,DIB_RGB_COLORS); //建立位图HDC hMemDC=::CreateCompatibleDC(dc.m_hDC); //建立内存HBITMAP hBitmapOld=SelectBitmap(hMemDC,hBitmap); //选择对象::StretchBlt(dc.m_hDC,0,0,iW,iH,hMemDC,0,0,iW,iH,SRCCOPY);//显示真彩位图::DeleteObject(SelectObject(hMemDC,hBitmapOld)); //删除位图}7. 弹出窗口类声明在Mainfrm.h中增加代码,为显示和撤销弹出窗口作准备:class CsplashWnd: //闪烁窗口类……class CMainFrame: public CMDIFrameWnd{……pubIic:CSplashWnd SplashWnd; //声明类}8. 真彩封面的实现在Mainfrm.cpp中增加显示弹出窗口、播放音乐、延时功能和撤销弹出窗口的代码, 以实现真彩封面的整个处理过程:#include "splash.h" //新类支持#include "mmsystem.h" //多媒体支持#pragma comment(lib,"WINMM.LIB") //多媒体支持……int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){SplashWnd.Create(this); //创建弹出窗口SplashWnd.ShowWindow(SW_SHOW); //显示弹出窗口SplashWnd.UpdateWindow(); //更新弹出窗口int dd=sndPlaySound("c:\\windows\\reminder.wav",SND_ASYNC|SND_LOOP);//异步播放W A V文件if (dd==FALSE){//参数SND_ASYNC|SND_LOOP可循环播放AfxMessageBox("播放W A V文件错误");}::Sleep(2000);//进程休眠2秒……//应用程序初始化工作dd=sndPlaySound("",SND_ASYNC);//终止播放.W A V文件SplashWnd.DestroyWindow(); //撤消弹出窗口return 0;}至此整个真彩启动封面制作完毕,如果需要还可以增加动画和移动字幕等其他多媒体功能。
在VC++.net中制作启动屏幕的新方法在利用VC++.net编程过程中,遇到制作启动屏幕的问题,几经试验,得出一种方便简单的制作方法。
基本原理是利用对话框窗口的特性,在启动时首先创建对话框,设置一个获得位图文件的句柄,利用Picture控件的SetBitmap(HBITMAP hBitmap)方法,使位图文件充满整个P icture控件窗口,最后设置定时器,整个启动屏幕就制作完成。
下面介绍具体实现步骤。
1. 打开的开发环境,新建VC++.net中的MFC应用程序,输入工程名称MyS ample,点击“确定”,“完成”;2. 打开资源视图,添加对话框,更改ID为ID_DIALOG_SPLASH,设置对话框Cent er属性为True,Border属性为“无”;3. 在对话框中添加Picture控件,设置Picture控件的ID号为ID_PIC,Type属性为“位图”,Center image属性为True,然后调整标尺使对话框没有外框,调整对话框的大小以适应启动屏幕的要求,调整Picture的宽高使其充满整个对话框窗口;4. 双击对话框窗口,弹出类向导对话框,在类名中键入CSplash,选择基类为Cdialo g,点击确定,定义控件Picture的控件变量为m_pic;5. 在Csplash类中重载OnInitDialog()函数,添加消息WM_CHAR,WM_TIMER,W M_LBUTTONUP,WM_MBUTTONUP,WM_RBUTTONUP;6. 在OnInitDialog()函数中添加代码如下:7. 在OnTimer(UINT nIDEvent) 函数中添加代码如下:8. 在OnLButtonUp,OnLButtonUp,OnLButtonUp,OnChar函数中加入以下代码:9. 在MySample.Cpp中引入头文件在InitInstance()函数中加入代码:至此,启动屏幕就Ok了!VC++工程中加入SplashScreen摘要本文旨在剖析VC++工程中加入SplashScreen 的原理,并给出在VC++ MFC(exe)工程中加入SplashScreen 的步骤。
在VC6.0时代,我们通过在MFC工程中插入Splash组件来简单方便的实现这个功能,但在VS2008以后就没有了这个功能,所以如果想给自己的程序添加一个显示Logo的启动画面,就需要自己添加代码来实现,参考了下VC6.0中这个Splash组件添加后的代码,就很容易在自己的项目里实现这个功能。
如下图(来自网络)。
本文以VS2008为例做一个演示:首先,在菜单的“项目”中选择“添加类”->”c++类”,生成一个启动画面的Splash类。
然后,实现代码主要是在CwzdSplash类的头文件和cpp文件中实现。
在CwzdSplash类的头文件中我们添加下面的代码:#pragma once// CWzdSplashclass CWzdSplash : public CWnd{DECLARE_DYNAMIC(CWzdSplash)public:CWzdSplash();virtual ~CWzdSplash();protected:DECLARE_MESSAGE_MAP()public:CBitmap m_bitmap;// void Create(void);void Create(UINT nBitmapID);afx_msg void OnPaint();afx_msg void OnTimer(UINT_PTR nIDEvent);};在CwzdSplash类的cpp文件中我们添加下面的代码:// WzdSplash.cpp : 实现文件//#include "stdafx.h"#include "TinyPlusCompiler.h"#include "WzdSplash.h"// CWzdSplashIMPLEMENT_DYNAMIC(CWzdSplash, CWnd) CWzdSplash::CWzdSplash(){}CWzdSplash::~CWzdSplash(){}BEGIN_MESSAGE_MAP(CWzdSplash, CWnd) ON_WM_PAINT()ON_WM_TIMER()END_MESSAGE_MAP()// CWzdSplash 消息处理程序void CWzdSplash::Create(UINT nBitmapID) {m_bitmap.LoadBitmap(nBitmapID);BITMAP bitmap;m_bitmap.GetBitmap(&bitmap);//CreateEx(0,AfxRegisterWndClass(0),"",WS_POPUP|WS_VISIBLE|WS_BORDER,0 ,0,bitmap.bmWidth,bitmap.bmHeight,NULL,0);CreateEx(0,AfxRegisterWndClass(0,AfxGetApp()->LoadStandardCursor(IDC_ARROW)),NULL, WS_POPUP | WS_VISIBLE, 0, 0, bitmap.bmWidth, bitmap.bmHeight, NULL , NULL);}void CWzdSplash::OnPaint(){// TODO: 在此处添加消息处理程序代码// 不为绘图消息调用CWnd::OnPaint()CPaintDC dc(this); // device context forpaintingBITMAP bitmap;m_bitmap.GetBitmap(&bitmap);CDC dcComp;dcComp.CreateCompatibleDC(&dc);dcComp.SelectObject(&m_bitmap);// draw bitmapdc.BitBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&dcComp,0,0,SRCCOPY);}void CWzdSplash::OnTimer(UINT_PTR nIDEvent){// TODO: 在此添加消息处理程序代码和/或调用默认值//CWnd::OnTimer(nIDEvent);DestroyWindow(); //销毁初始画面窗口}最后在项目的主窗口视图的Create函数中添加下面的实例化过程就可以显示出我们自定义的Logo启动画面了:CWzdSplash wndSplash; //创建启动窗口类的实例wndSplash.Create(IDB_SPLASH);wndSplash.CenterWindow();wndSplash.UpdateWindow(); //send WM_PAINTSleep(1500);wndSplash.DestroyWindow();//销毁初始画面窗口注明一下要注意的地方:wndSplash.Create(IDB_SPLASH);中的IDB_SPLASH是在添加位图资源时添加进来的资源ID,自己可以定义自己所喜欢的启动图画。
用VC++实现动态效果的启动程序
王鹏程
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2005(000)008
【摘要】许多好的软件在启动时都具有闪屏效果。
闪屏效果的广泛使用主要有以下一些理由:
【总页数】3页(P37-39)
【作者】王鹏程
【作者单位】无
【正文语种】中文
【中图分类】TP3
【相关文献】
1.基于Jav aScrip t、C SS 和D OM 的页面动态效果实现 [J], 徐迪新;吴长孙
2.中医经络简易动态效果App的设计和实现 [J], 钱立
3.用Visual Basic程序实现霓虹灯动态效果 [J], 谭立球;邵博雅
4.基于JQuery脚本库的动态效果的设计与实现 [J], 王晓洁; 秦冰峰
5.基于JQuery脚本库的动态效果的设计与实现 [J], 王晓洁;秦冰峰
因版权原因,仅展示原文概要,查看原文内容请购买。
VC6.0中淡入淡出启动画面的制作武汉大学,遥感信息工程学院 屈伟军好久没有写过技术文章了,就写一下淡入淡出启动画面的制作吧。
在VC6.0中,有一个简单的方法可以加入启动画面,那就是使用“组件与控件”。
不过这种方法只在VC6.0中可以使用,而且在Windows 7操作系统中不支持此操作,通用性也不好,因而在这里不予介绍。
下面讲述如何来设计自己的启动窗口类。
首先,新建一个MFC的工程,然后选择菜单Insert ‐> New Class…,弹出新建类对话框,类型选择MFC Class,基类选择generic CWnd,名称就叫做CSplashWnd吧。
点击确定以后工程中就多出了一个类CSplashWnd,里面除了构造函数和析构函数之外什么都没有,需要我们自己来添加功能。
使用启动画面要自己准备一幅位图,图1所示的是Microsoft Office Word 2007的启动画面。
当我们准备好位图之后,就可以在资源视图中点击鼠标右键(注意不要点在空白处,在任何一个文件夹上都可以),选择Import…,导入该位图,ID就命名为IDB_SPLASH。
图1 Microsoft Office Word 2007 启动画面打开类向导,为CSplashWnd类添加四个消息处理函数WM_CREATE、WM_CLOSE、WM_TIMER 和WM_ERASEBKGND。
全部添加好了之后,就可以开始实现我们的功能了。
(1)在CSplashWnd类的构造函数中添加下面的代码:LPCTSTR lpszWndClass= AfxRegisterWndClass(NULL); // 注册窗口类CreateEx(WS_EX_TOOLWINDOW | WS_EX_TOPMOST, lpszWndClass, NULL, WS_POPUP,CW_USEDEFAULT, SPLASH_WIDTH, SPLASH_HEIGHT, NULL, CW_USEDEFAULT,NULL, NULL); // 创建窗口其中SPLASH_WIDTH和SPLASH_HEIGHT分别为位图的宽度和高度,需要事先定义。
四种程序启动画面的制作方法(VC)(优选)word资料四种程序启动画面的制作方法(VC使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序;二是可以用来显示软件名称和版权等提示信息。
怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法,前三种适用于基于文档的应用程序,第四种适用于基于对话框的应用程序。
1.利用组件库中的Splash Screen组件实现(1用Photoshop等制作启动画面图像,保存为bmp格式。
(2用Appwizard建一个基于单文档的工程Splash。
(3在资源中插入位图资源打开VC++的资源编辑器,用鼠标右键单击Resources文件夹,选择Import命令,插入所制作的位图。
如果位图超过256色,VC会弹出一个对话框,提示位图已经插入但不能在位图编辑器中显示,确定即可。
将位图ID改为IDB_SPLASH。
(4添加Splash Screen控件①选择菜单“project”/“Add To Project”/“Conponents and Controls”打开对话框,在列表框中双击“Visual C++ Conponents”选项,选择“Splash Screen”控件,然后单击“Insert”。
②确认或修改类名和位图资源ID,单击OK确认。
③编译、连接,漂亮的启动画面就显示出来了。
(5如果需要改变启动画面的停留时间,就修改SetTimer(函数的第二个参数,默认是750 毫秒。
该函数所在位置:2.利用无模式对话框显示启动画面(1用Appwizard建一个基于单文档的工程Splash。
(2导入用作启动画面的图片,更改ID为IDB_SPLASH。
(3新建一个对话框,在其中添加启动画面。
在资源中新建一个对话框,创建对话框类CSplashDlg。
在对话框中添加一个Picture控件,打开其“Properties”对话框,选General,在Type下拉列表中选择Bitmap,在Image下拉列表中选前面导入的位图资源ID值:IDB_SPLASH。
VC上机环境图示讲解1.自己编写程序并运行:(1)启动vc++:方式1:双击桌面图标方式2:开始菜单-程序-Microsoft Visual C++-单击(2)单击:File->new(3)在弹出的对话框中,选择“Files”(文件)选项,在中间选择“C++ source file”,然后在右边的File下面的空白处填写要创建的文件名(不用写扩展名),在“Location”(位置)处,选择文件要存放的位置。
最后单击“OK”(确定)即可。
(5) 在空白处开始写C代码即可(6)编写完代码后,需要先编译,然后运行如何编译?有两种方式:方式1:使用“Build”菜单,如下所示:方式2:使用快捷工具栏,直截了当点击即可完成编译:(7)使用任一种方式编译时,vc都会弹出一个对话框:此对话框的意思是问你是否要创建一个默认的工程工作空间?选择“是”,这是因为VC是基于工程的一个工作环境,任何程序都要基于工程去创建和运行。
若编写完程序而没有储存就编译,那么系统会弹出另外一个对话框:选择“是”即可。
(8) 现在,vc开始编译源程序,假如有语法错误,会在最下面的消息窗口进行提示:该消息窗口的右边有个垂直滚动条,能够用鼠标向上拖动,查看错误出处和含义:上图中,框起来的部分表示的错误是:d:\vcstudy\first.cpp(8) : error C2146: syntax error : missing ';' before identifier 'printf'文件位置行号错误语法错误错误含义:在'printf'标识前丢失分号;建议修改一个错误后,再重新编译,因为有时候一个错误有可能导致后面显现多个错误。
尽管“warning”能够不用管,然而最好当做错误对待。
(9) 假如编译没有发觉错误,能够通过单击工具栏上的!按钮运行程序:也能够通过菜单运行程序,如右所示:2.利用模拟练习系统或进行正式考试时的VC使用方法(1)以模拟考试系统为例,进入系统后,显现如下画面:(2)现在,系统开始计时:在系统中,上面有一个工具栏,单击“隐藏窗口(或者显示窗口)”能够隐藏或者显示下面的题目窗口。
利用VC编写简单的绘图程序上机实验环境亦可选择Microsoft Visual C++〔以下简称VC〕。
VC是美国微软公司生产的基于其Windows系统的软件开发工具。
它具有使用灵活,并与32位Windows内核〔使用于Windows 2000/Windows XP〕高度兼容的特点,从而被Windows程序员们广泛使用。
VC 在图形图像处理方面有着广泛的应用,MFC中提供了大量的图形图像函数,下面我们将对使用VC/MFC编写简单的绘图程序。
一、使用VC编写MFC单文档应用程序很简单,只需要按照下面几个步骤进行:1.翻开MSVC集成开发环境。
双击桌面或“开始〞菜单中的Microsoft VisualC++6.0,不久将看到VC的编辑窗口,如图3-5:图1 VC启动界面2.选择菜单“File | New〞,在弹出的对话框中1)单击上方的选项卡“Project〞,2)选择“MFC AppWizard(exe)〞,3)在“Project name〞一栏中填写工程名,例如draw,4)在“Location〞一栏中填写你想把文件存放的位置〔目录〕。
然后按“OK〞。
见图2。
注意:第4〕步中指定你自己的目录,不要使用系统的缺省目录或者随便放在根目录或者其他的目录下。
这样便于你找到自己编写的程序。
图2 应用程序向导主界面3.在MFC Appwizard-Step 1中选择“Single Document〞,即单文档应用程序,点击“Finish〞,如图3所示。
注意:对于下面的操作我们可以忽略,直接点Finish即可。
图3 应用程序向导中选择单文档视图4.系统弹出一个当前工程信息的对话框,如图4所示,直接点“OK〞即可。
图4 新建工程信息5.进入程序编写的主界面,屏幕左下方为工作区,如图5所示,工作区中共有三种视图,分别是:1)文件视图〔“FileView〞〕,主要包括头文件,cpp文件以及资源文件。
我们在头文件中一般添加类的定义,类的成员变量和函数的声明,而在cpp文件中具体实现函数。
VC启动界面设计1.利用向导建立单文档文件2.插入资源图片Insert--->Resource-->Bitmap(改变图片的属性)3..建立新类:Insert-->New Class注意:(选择Class type:MFC Class Base class:generic CWnd)4.从CWnd类派生一个启动窗口类,如CSplash,在头文件中添加用于位图的CBitmap成// Attributespublic:CBitmap m_bitmap;5.重载修改CSplash类的Create函数添加代码:BOOL CSplash::Create(UINT nID){// TODO: Add your specialized code here and/or call the base classm_bitmap.LoadBitmap(nID);BITMAP bmp;m_bitmap.GetBitmap(&bmp);int x=(::GetSystemMetrics(SM_CXSCREEN)-bmp.bmWidth)/2;int y=(::GetSystemMetrics(SM_CYSCREEN)-bmp.bmHeight)/2;CRect rec(x,y,x+bmp.bmWidth,y+bmp.bmHeight);CreateEx(0,AfxRegisterWndClass(0),"",WS_POPUP|WS_VISIBLE|WS_BORDER,rec,NULL,0); return TRUE;//return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rec, pParentWnd, nID, pContext);}6.响应CSplash类的WM_PAINT消息(右键),绘制窗口添加代码:void CSplash::OnPaint(){CPaintDC dc(this); // device context for painting// TODO: Add your message handler code hereCDC dcComp;dcComp.CreateCompatibleDC(&dc);dcComp.SelectObject(&m_bitmap);BITMAP bmp;m_bitmap.GetBitmap(&bmp);dc.BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,&dcComp,0,0,SRCCOPY); // Do not call CWnd::OnPaint() for painting messages}7.在应用程序APP类的InitInstance()中建立启动画面类CSplash wndSplash;wndSplash.Create(IDB_LOGO); //IDB_LOGO是位图ID wndSplash.UpdateWindow(); //更新显示窗口Sleep(2000); //画面显示时间(毫秒)注意:在APP类添加头文件#include “xx.h”。
用C#给程序加启动画面并只允许一个应用程序实例运行减小字体增大字体涉及类:1、启动画面类:public class SplashForm : System.Windows.Forms.Form{private System.Windows.Forms.PictureBox pictureBox1;private bel label1;private bel lbl_version;///<summary>///必需的设计器变量。
///</summary>private ponentModel.Container components = null;public SplashForm(){//// Windows 窗体设计器支持所必需的//InitializeComponent();lbl_version.Text = "版本:" + Application.ProductVersion;//// TODO: 在 InitializeComponent 调用后添加任何构造函数代码//}//以下省略2、应用程序加载类:using System;using System.Drawing;using System.Collections;using ponentModel;using System.Windows.Forms;using System.Data;using System.Runtime.InteropServices;using System.Diagnostics;using System.Reflection;using System.IO;namespace Heroic.TempAnalyse.TempGui{///<summary>/// AppLoader 的摘要说明。
///</summary>public class AppLoader{private static ApplicationContext context;private static SplashForm sForm = new SplashForm();private static MainWindow mForm = null;//0不可见但仍然运行,1居中,2最小化,3最大化private const int WS_SHOWNORMAL = 3;[STAThread]static void Main(string[] args){// [8/12/2004]用于更新该程序。
制作程序的启动窗口从File->new form新建一窗体,并设计好其外观。
窗体名为About,源文件命名为About.cpp。
在Projects->Options,将About窗体移至Available Forms从View->Project Manager中打开工程文件的源文件Project1.cpp,加入如下红色代码://---------------------------------------------------------------------------#include <vcl.h>#include <About.h>#pragma hdrstop//---------------------------------------------------------------------------USEFORM("Unit1.cpp", Form1);USEFORM("About.cpp", Form2);//---------------------------------------------------------------------------WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int){DWORD lTime;try{Application->Initialize();Form2=new TForm2(Form2); //创建新窗体Form2Form2->Show(); //Form2显示Form2->Update(); //更新窗体,显示图片lTime=GetTickCount(); //Application->CreateForm(__classid(TForm1), &Form1);while((GetTickCount()-lTime)/1000<3); //显示3秒后Form2->Hide(); //窗体隐藏Form2->Free(); //从内存释放窗体Application->Run();}catch (Exception &exception){Application->ShowException(&exception);}catch (...){try{throw Exception("");}catch (Exception &exception){Application->ShowException(&exception);}}return 0;}//---------------------------------------------------------------------------以上代码在C++ builder 6和Windows XP下编译通过。
工作中经常遇到一些程序,它们在系统启动的过程中,自动打开并运行,以便实现对系统的监控或者病毒的检测等特定的目的,典型的例子就是常用的一些杀毒软件如:KV300及瑞星杀毒软件等。
笔者在此,以自己的编程实践为基础,说明这些程序自动启动的原理和方法,同时对一些典型程序代码进行分析,以便读者在今后的编程过程中使用。
一、程序自动启动的原理及方法:1. 利用WIN.INI文件实现相关程序的自动启动WIN.INI是系统保存在C:\WINDOWS\目录下的一个系统初始化文件。
系统在起动时会检索该文件中的相关项,以便对系统环境的初始设置。
在该文件中的"[windows]"数据段中,有两个数据项"load="和"run=",它们的作用就是在系统起动之后自动得装入和运行相关的程序。
如果我们需要在系统起动之后装入并运行一个程序,只将需要运行文件的全文件名添加在该数据项的后面系统起动后就会自动运行该程序,系统也会进入特定的操作环境中去。
2. 利用注册表实现相关程序的自动启动系统注册表保存着系统的软件、硬件及其他与系统配置有关的重要信息,一个计算机系统的系统注册表一旦遭到破坏,整个系统将无法运行。
在计算机的系统注册表中的子目录中有一个目录的名称为HKEY_LOCAL_MACHINE\Software \Microsoft\Windows\Current_Version\Run,如果你想让程序在系统起动的过程中启动该程序,就可以向该目录添加一个子项,具体的过程是在注册表中右击该项,选中其中的"新建"项目,然后选中其中的"串值",建立新的串值后将它的名称改成相应的名称,双击新建的串值,输入新的数值,自动启动程序的过程就设置完成。
二、利用V C++编程实现程序自动启动的编程实例。
微软公司提供的V C++ 6.0程序开发工具功能非常强大。
c#制作简单启动画⾯的⽅法本⽂实例讲述了c#制作简单启动画⾯的⽅法。
分享给⼤家供⼤家参考。
具体分析如下:启动画⾯是程序启动加载组件时⼀个让⽤户稍微耐⼼等待的提⽰框。
⼀个好的软件在有启动等待需求时必定做⼀个启动画⾯。
启动画⾯可以让⽤户有⼼理准备来接受程序加载的缓慢,还可以让⽤户知道加载的进度和内容。
本⽂只是记录最简单的构架。
VS2010创建⼀个C# Windows窗体应⽤程序,将主窗体改名为FormMain,再创建⼀个窗体起名为SplashScreen。
向程序中加载⼀个图⽚作为启动画⾯,如下图///<summary>///启动画⾯///</summary>public partial class SplashScreen : Form{///<summary>///启动画⾯本⾝///</summary>static SplashScreen instance;///<summary>///显⽰的图⽚///</summary>Bitmap bitmap;public static SplashScreen Instance{get{return instance;}set{instance = value;}}public SplashScreen(){InitializeComponent();// 设置窗体的类型const string showInfo = "启动画⾯:我们正在努⼒的加载程序,请稍后...";FormBorderStyle = FormBorderStyle.None;StartPosition = FormStartPosition.CenterScreen;ShowInTaskbar = false;bitmap = new Bitmap(Properties.Resources.SplashScreen);ClientSize = bitmap.Size;using (Font font = new Font("Consoles", 10)){using (Graphics g = Graphics.FromImage(bitmap)){g.DrawString(showInfo, font, Brushes.White, 130, 100);}}BackgroundImage = bitmap;}protected override void Dispose(bool disposing){if (disposing && (components != null)){if (bitmap != null){bitmap.Dispose();bitmap = null;}components.Dispose();}base.Dispose(disposing);}public static void ShowSplashScreen(){instance = new SplashScreen();instance.Show();}}然后在主程序启动时调⽤static class Program{///<summary>///应⽤程序的主⼊⼝点。
C__如何启用启动画面新增Form 作為Splash Screen Form添加欢迎界面的窗体(比如SlpashForm),做以下调整:将FormBorderStyle属性设成None,即没有窗体边框将StartPosition属性设成CenterScreen,即总是居中将TopMost属性设成True,即总是在顶部将UseWaitCursor属性设成Ture,即显示等待光标,让人感觉后台还在运行增加一个PictureBox控件,与欢迎图片大小一致,窗体的大小也设成一致增加一个ProgressBar控件,将Style设成Marquee,将MarqueeAnimationSpeed设成50 FormSplashScreen fss;public MainFrm(){fss = new FormSplashScreen();fss.Owner = this;//fss.WindowState = FormWindowState.Maximized;this.Visible = false;this.Enabled = false;fss.Show();//System.Threading.Thread.Sleep(2000);Application.DoEvents();InitializeComponent();}privatevoid Form1_Load(object sender, EventArgs e){///////////////////////////////////////////////////this.Visible = false;this.Enabled = false;System.Threading.Thread.Sleep(2000);this.Visible = true;this.Enabled = true;fss.Close();}这样就可以实现启动画面了。
应用程序启动画面的制作与驱动
郑汉垣
【期刊名称】《龙岩学院学报》
【年(卷),期】2001(019)003
【摘要】介绍在Delphi编程中怎样制作应用程序的启动画面及其如何驱动和延时清除启动画面.
【总页数】2页(P12,19)
【作者】郑汉垣
【作者单位】龙岩师专计算机系
【正文语种】中文
【中图分类】TP391
【相关文献】
1.如何在LabVIEW中制作软件的启动画面 [J], 赵海龙;王长欣
2.VFP应用程序启动画面及每日一帖的实现 [J], 谢古今;许世蒙
3.Windows XP启动画面还有春天—精美WindowsXP启动画面制作 [J], Stanger
4.应用G语言LabVIEW制作启动画面 [J], 李晓军; 崔学政
5.多媒体教学应用程序制作流程与制作软件简述 [J], 宋孝彬
因版权原因,仅展示原文概要,查看原文内容请购买。
四种程序启动画面的制作方法(VC)
使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序);二是可以用来显示软件名称和版权等提示信息。
怎样使用VC++制作应用程序的启动画面呢?本文提供四种方法,前三种适用于基于文档的应用程序,第四种适用于基于对话框的应用程序。
1.利用组件库中的Splash Screen组件实现
(1)用Photoshop等制作启动画面图像,保存为bmp格式。
(2)用Appwizard建一个基于单文档的工程Splash。
(3)在资源中插入位图资源
打开VC++的资源编辑器,用鼠标右键单击Resources文件夹,选择Import命令,插入所制作的位图。
如果位图超过256色,VC会弹出一个对话框,提示位图已经插入但不能在位图编辑器中显示,确定即可。
将位图ID改为IDB_SPLASH。
(4)添加Splash Screen控件
①选择菜单“project”/“Add To Project”/“Conponents and Controls”打开对话框,在列表框中双击“Visual C++ Conponents”选项,选择“Splash Screen”控件,然后单击“Insert”。
②确认或修改类名和位图资源ID,单击OK确认。
③编译、连接,漂亮的启动画面就显示出来了。
(5)如果需要改变启动画面的停留时间,就修改SetTimer()函数的第二个参数,默认是750 毫秒。
该函数所在位置:
2.利用无模式对话框显示启动画面
(1)用Appwizard建一个基于单文档的工程Splash。
(2)导入用作启动画面的图片,更改ID为IDB_SPLASH。
(3)新建一个对话框,在其中添加启动画面。
在资源中新建一个对话框,创建对话框类CSplashDlg。
在对话框中添加一个Picture控件,打开其“Properties”对话框,选General,在Type下拉列表中选择Bitmap,在Image下拉列表中选前面导入的位图资源ID值:IDB_SPLASH。
(4)修改对话框的显示效果
①调整对话框大小,去掉两个自动生成的按钮,并在“Properties”的“Styles”页中去掉对Title bar的选取;
②选中图像,调整大小使之适应对话框的可编辑区,修改其“Properties”的“Styles”
使之居中。
(5)在CMainFrame类的OnCreate()函数中添加创建、显示并销毁无模式对话框的代码。
3.通过发送消息显示和销毁启动画面
①重复方法二的步骤1至步骤4。
②使用Class Wizard为CMainFrame类添加消息响应函数WM_TIMER。
③修改代码,通过发送WM_TIMER消息启动和销毁启动画面
1)定义对话框类的变量
在MainFrm.h文件头部添加#include "SplashDlg.h",并在CMainFram类的定义中加上公用变量CSplashDlg *Splash。
2)添加计时器消息相应函数代码
3)修改框架生成函数OnCreate()
4.制作基于对话框的应用程序启动画面
以上几种方法都不能给基于对话框的应用程序做启动画面,下面介绍一种方法给基于对话框的应用程序做启动画面。
基于对话框的应用程序没有主框架,因此不能采用前面几种方法制作启动画面。
不过我们可以把方法一建立起的启动画面文件移植过来,然后,对程序进行一些修改。
(1)参照方法一建立基于单文档的工程Splash。
(2)建立基于对话框的工程Cover。
(3)文件移植
①将Splash1.cpp 和Splash1.h 两个文件从方法一建立的Splash工程拷贝到Cover工程中,并且分别加入到Source Files和Header Files中;
②导入位图文件到工程的资源中,改ID为IDB_SPLASH。
(4)修改代码,实现启动画面的调用
①添加CCoverApp 的InitInstance() 函数代码
②使用ClassWizard 添加OnCreate() 函数到对话框类CCoverDlg中,并修改代码#include "Splash1.h" //加在CoverDlg.cpp文件的头文件调用部位
说明:启动画面停留时间的修改同方法一。
5.结束语
正如前面提过的,运用好启动画面可以给使用者留下一个强烈的印象,起到很好的宣传作用,以上程序均在Visual C++ 6.0、Windows2000调试通过。