My FAQ,最新最全的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++ > 图形图像与多媒体
模拟 Windows 开机动态色带条
作者:未知 时间:2005-07-20 14:15 出处:VC知识库 责编:MyFAQ
              摘要:模拟 Windows 开机动态色带条

模拟 Windows 开机动态色带条


作者:华志良


下载源代码

一、首先使用 ResHacker 将 NTOSKRNL.EXE 中的资源 HACK 出来,安装过 ResHacker 后,
找到系统目录下的 NTOSKRNL.EXE, 然后打开文件,在位图资源处找到我们需要的 Windows 开机画面,
然后用保存资源成BMP的方式将资源导出到一个BMP文件,通过简单的处理就可以得到静态的色带的BMP文件 dynaline.bmp 了!:->:


图一 使用 ResHacker 得到开机画面

二、程序设计
   接下来我们需要在 VC 中创建一个简单的对话框工程 DemoLine
导入我们获得的静态位图 dynaline.bmp,在工程中加入一个bitmap 资源 IDB_DYNLINE
在的对话框中加入静态的 Picture 控件,将 CStatic 属性设成 bitmap,
然后创建一个派生于 CStatic 的 MFC 新类 CDynLine,我们让这个类来完成动画显示!
在类 CDynLine 的实现代码中加入工作线程,它负责将静态的画面显示成动态的色带条,代码如下:

UINT	DispThread(LPVOID lpParam)
{
	CDynLine* pWnd = (CDynLine*)lpParam;
	CClientDC dcClient(pWnd);
	CDC		dcMem;
	dcMem.CreateCompatibleDC(&dcClient);
	BITMAP	bits;
	pWnd->m_bmp.GetBitmap(&bits);
	CBitmap *pBmp = (CBitmap*)dcMem.SelectObject( pWnd->m_bmp );

	CSize	size(0,0);

	while(g_lDisplay)
	{
		if( size.cx < bits.bmWidth )
			size.cx +=2;
		else
			size.cx = 0;
		dcClient.BitBlt( 0,0,size.cx,bits.bmHeight,&dcMem,(bits.bmWidth-size.cx),0,SRCCOPY);
		dcClient.BitBlt( size.cx,0,(bits.bmWidth-size.cx),bits.bmHeight,&dcMem,0,0,SRCCOPY);

		Sleep( 20 );
	}
	return 1;
}
动态显示的算法很简单,就是不断移动填充图象的位置。

三、在 CDynLine 中加入控制图象移动的方法 Start() 和 Stop(),很轻松,改变全局变量g_lDisplay的值就OK了。
但是需要注意的是同步问题,使用InterlockedIncrement和InterlockedDecrement函数可以保证正确读写。
最后,在对话框程序中把静态图象控件的类 CStati c改 成CDynLine 就大功告成了!


图二 程序显示界面

四、使用这样的一个类用于其他的工程,通过动态的色带告诉用户程序正在处理状态,很直观,且简单明了。

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