本文目录一览:
- 1、黑客字体我们怎么认识?
- 2、什么是灰鸽子?(黑客类)
- 3、黑客说的九号字体是什么
- 4、把word中替换的部分字的颜色改成红色,高手请进!
- 5、黑客文字怎么做?
- 6、黑客帝国文字雨 flash 怎么制作
黑客字体我们怎么认识?
黑客字体我们应该学会正确的认识,你看其他的字体是一样的,例如,制作黑客帝国字体特效,前景色改为亮绿色,背景黑色,滤镜艺术效果霓虹灯光。等。
什么是灰鸽子?(黑客类)
灰鸽子
一、灰鸽子病毒简介
灰鸽子是国内一款著名后门。比起前辈冰河、黑洞来,灰鸽子可以说是国内后门的集大成者。其丰富而强大的功能、灵活多变的操作、良好的隐藏性使其他后门都相形见绌。客户端简易便捷的操作使刚入门的初学者都能充当黑客。当使用在合法情况下时,灰鸽子是一款优秀的远程控制软件。但如果拿它做一些非法的事,灰鸽子就成了很强大的黑客工具。这就好比火药,用在不同的场合,给人类带来不同的影响。对灰鸽子完整的介绍也许只有灰鸽子作者本人能够说清楚,在此我们只能进行简要介绍。
灰鸽子客户端和服务端都是采用Delphi编写。黑客利用客户端程序配置出服务端程序。可配置的信息主要包括上线类型(如等待连接还是主动连接)、主动连接时使用的公网IP(域名)、连接密码、使用的端口、启动项名称、服务名称,进程隐藏方式,使用的壳,代理,图标等等。
服务端对客户端连接方式有多种,使得处于各种网络环境的用户都可能中毒,包括局域网用户(通过代理上网)、公网用户和ADSL拨号用户等。
下面介绍服务端:
配置出来的服务端文件文件名为G_Server.exe(这是默认的,当然也可以改变)。然后黑客利用一切办法诱骗用户运行G_Server.exe程序。具体采用什么办法,读者可以充分发挥想象力,这里就不赘述。
G_Server.exe运行后将自己拷贝到Windows目录下(98/xp下为系统盘的windows目录,2k/NT下为系统盘的Winnt目录),然后再从体内释放G_Server.dll和G_Server_Hook.dll到windows目录下。G_Server.exe、G_Server.dll和G_Server_Hook.dll三个文件相互配合组成了灰鸽子服务端, G_Server_Hook.dll负责隐藏灰鸽子。通过截获进程的API调用隐藏灰鸽子的文件、服务的注册表项,甚至是进程中的模块名。截获的函数主要是用来遍历文件、遍历注册表项和遍历进程模块的一些函数。所以,有些时候用户感觉种了毒,但仔细检查却又发现不了什么异常。有些灰鸽子会多释放出一个名为G_ServerKey.dll的文件用来记录键盘操作。注意,G_Server.exe这个名称并不固定,它是可以定制的,比如当定制服务端文件名为A.exe时,生成的文件就是A.exe、A.dll和A_Hook.dll。
Windows目录下的G_Server.exe文件将自己注册成服务(9X系统写注册表启动项),每次开机都能自动运行,运行后启动G_Server.dll和G_Server_Hook.dll并自动退出。G_Server.dll文件实现后门功能,与控制端客户端进行通信;G_Server_Hook.dll则通过拦截API调用来隐藏病毒。因此,中毒后,我们看不到病毒文件,也看不到病毒注册的服务项。随着灰鸽子服务端文件的设置不同,G_Server_Hook.dll有时候附在Explorer.exe的进程空间中,有时候则是附在所有进程中。
灰鸽子的作者对于如何逃过杀毒软件的查杀花了很大力气。由于一些API函数被截获,正常模式下难以遍历到灰鸽子的文件和模块,造成查杀上的困难。要卸载灰鸽子动态库而且保证系统进程不崩溃也很麻烦,因此造成了近期灰鸽子在互联网上泛滥的局面。
二、灰鸽子的手工检测
由于灰鸽子拦截了API调用,在正常模式下服务端程序文件和它注册的服务项均被隐藏,也就是说你即使设置了“显示所有隐藏文件”也看不到它们。此外,灰鸽子服务端的文件名也是可以自定义的,这都给手工检测带来了一定的困难。
但是,通过仔细观察我们发现,对于灰鸽子的检测仍然是有规律可循的。从上面的运行原理分析可以看出,无论自定义的服务器端文件名是什么,一般都会在操作系统的安装目录下生成一个以“_hook.dll”结尾的文件。通过这一点,我们可以较为准确手工检测出灰鸽子 服务端。
由于正常模式下灰鸽子会隐藏自身,因此检测灰鸽子的操作一定要在安全模式下进行。进入安全模式的方法是:启动计算机,在系统进入Windows启动画面前,按下F8键(或者在启动计算机时按住Ctrl键不放),在出现的启动选项菜单中,选择“Safe Mode”或“安全模式”。
1、由于灰鸽子的文件本身具有隐藏属性,因此要设置Windows显示所有文件。打开“我的电脑”,选择菜单“工具”—》“文件夹选项”,点击“查看”,取消“隐藏受保护的操作系统文件”前的对勾,并在“隐藏文件和文件夹”项中选择“ 显示所有文件和文件夹”,然后点击“确定”。
2、打开Windows的“搜索文件”,文件名称输入“_hook.dll”,搜索位置选择Windows的安装目录(默认98/xp为C:\windows,2k/NT为C:\Winnt)。
3、经过搜索,我们在Windows目录(不包含子目录)下发现了一个名为Game_Hook.dll的文件。
4、根据灰鸽子原理分析我们知道,如果Game_Hook.DLL是灰鸽子的文件,则在操作系统安装目录下还会有Game.exe和Game.dll文件。打开Windows目录,果然有这两个文件,同时还有一个用于记录键盘操作的GameKey.dll文件。
经过这几步操作我们基本就可以确定这些文件是灰鸽子 服务端了,下面就可以进行手动清除。
三、灰鸽子的手工清除
经过上面的分析,清除灰鸽子就很容易了。清除灰鸽子仍然要在安全模式下操作,主要有两步:1、清除灰鸽子的服务;2删除灰鸽子程序文件。
注意:为防止误操作,清除前一定要做好备份。
(一)、清除灰鸽子的服务
注意清除灰鸽子的服务一定要在注册表里完成,对注册表不熟悉的网友请找熟悉的人帮忙操作,清除灰鸽子的服务一定要先备份注册表,或者到纯DOS下将注册表文件更名,然后在去注册表删除灰鸽子的服务。因为病毒会和EXE文件进行关联
2000/XP系统:
1、打开注册表编辑器(点击“开始”-》“运行”,输入“Regedit.exe”,确定。),打开 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services注册表项。
2、点击菜单“编辑”-》“查找”,“查找目标”输入“game.exe”,点击确定,我们就可以找到灰鸽子的服务项(此例为Game_Server,每个人这个服务项名称是不同的)。
3、删除整个Game_Server项。
98/me系统:
在9X下,灰鸽子启动项只有一个,因此清除更为简单。运行注册表编辑器,打开HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run项,我们立即看到名为Game.exe的一项,将Game.exe项删除即可。
(二)、删除灰鸽子程序文件
删除灰鸽子程序文件非常简单,只需要在安全模式下删除Windows目录下的Game.exe、Game.dll、Game_Hook.dll以及Gamekey.dll文件,然后重新启动计算机。至此,灰鸽子VIP 2005 服务端已经被清除干净。
以上介绍的方法适用于我们看到的大部分灰鸽子木马及其变种,然而仍有极少数变种采用此种方法无法检测和清除。同时,随着灰鸽子新版本的不断推出,作者可能会加入一些新的隐藏方法、防删除手段,手工检测和清除它的难度也会越来越大。
四、防止中灰鸽子病毒需要注意的事项
1. 给系统安装补丁程序。通过Windows Update安装好系统补丁程序(关键更新、安全更新和Service pack),其中MS04-011、MS04-012、MS04-013、MS03-001、MS03-007、MS03-049、MS04-032等都被病毒广泛利用,是非常必要的补丁程序
2. 给系统管理员帐户设置足够复杂足够强壮的密码,最好能是10位以上,字母+数字+其它符号的组合;也可以禁用/删除一些不使用的帐户
3. 经常更新杀毒软件(病毒库),设置允许的可设置为每天定时自动更新。安装并合理使用网络防火墙软件,网络防火墙在防病毒过程中也可以起到至关重要的作用,能有效地阻挡自来网络的攻击和病毒的入侵。部分盗版Windows用户不能正常安装补丁,这点也比较无奈,这部分用户不妨通过使用网络防火墙来进行一定防护
4. 关闭一些不需要的服务,条件允许的可关闭没有必要的共享,也包括C$、D$等管理共享。完全单机的用户可直接关闭Server服务。
. 下载HijackThis扫描系统
下载地址:
zww3008汉化版
英文版
2. 从HijackThis日志的 O23项可以发现灰鸽子自的服务项
如最近流行的:
O23 - Service: SYSTEM$ (SYSTEM$Server) - Unknown owner - C:\WINDOWS\setemy.bat
O23 - Service: Network Connections Manager (NetConMan) - Unknown owner - C:\WINDOWS\uinstall.exe
O23 - Service: winServer - Unknown owner - C:\WINDOWS\winserver.exe
O23 - Service: Gray_Pigeon_Server (GrayPigeonServer) - Unknown owner - C:\WINDOWS\G_Server.exe
用HijackThis选中上面的O23项,然后选择"修复该项"或"Fix checked"
3. 用Killbox删除灰鸽子对应的木马文件 可以从这里下载Killbox
“灰鸽子”杀伤力是“熊猫烧香”10倍
与“熊猫烧香”病毒的“张扬”不同,“灰鸽子”更像一个隐形的贼,潜伏在用户“家”中,监视用户的一举一动,甚至用户与MSN、QQ好友聊天的每一句话都难逃“鸽”眼。专家称,“熊猫烧香”还停留在对电脑自身的破坏,而“灰鸽子”已经发展到对“人”的控制,而被控者却毫不知情。从某种意义上讲,“灰鸽子”的危害超出“熊猫烧香”10倍。
“灰鸽子”如何控制电脑牟利
“黑客培训班”教网民通过“灰鸽子”控制别人电脑,“学费”最高200元,最低需要50元,学时一周到一个月不等。
黑客通过程序控制他人电脑后,将“肉鸡”倒卖给广告商,“肉鸡”的价格在1角到1元不等。资深贩子一个月内可以贩卖10万个“肉鸡”。
被控制电脑被随意投放广告,或者干脆控制电脑点击某网站广告,一举一动都能被监视。
直接把文件的路径复制到 Killbox里删除
通常都是下面这样的文件 "服务名"具体通过HijackThis判断
C:\windows\服务名.dll
C:\windows\服务名.exe
C:\windows\服务名.bat
C:\windows\服务名key.dll
C:\windows\服务名_hook.dll
C:\windows\服务名_hook2.dll
举例说明:
C:\WINDOWS\setemykey.dll
C:\WINDOWS\setemy.dll
C:\WINDOWS\setemy.exe
C:\WINDOWS\setemy_hook.dll
C:\WINDOWS\setemy_hook2.dll
用Killbox删除那些木马文件,由于文件具有隐藏属性,可能无法直接看到,但Killbox能直接删除. 上面的文件不一定全部存在,如果Killbox提示文件不存在或已经删除就没关系了
以上他们做了命名规则解释 去下载一个木马杀客灰鸽子专杀 下载地址 瑞星版本的专杀 下载地址 清理完后 需要重新启动计算机 服务停止 然后去找那些残留文件 参见 上面回答者
软件名称: 灰鸽子(Huigezi、Gpigeon)专用检测清除工具
界面语言: 简体中文
软件类型: 国产软件
运行环境: /Win9X/Me/WinNT/2000/XP/2003
授权方式: 免费软件
软件大小: 414KB
软件简介: 由灰鸽子工作室开发的,针对灰鸽子专用清除器!可以清除VIP2005版灰鸽子服务端程序(包括杀毒软件杀不到的灰鸽子服务端)和灰鸽子 [辐射正式版] 和 DLL版服务端 牵手版服务端
运行DelHgzvip2005Server.exe文件清除VIP2005版灰鸽子服务端程序,运行un_hgzserver.exe文件清除灰鸽子 [辐射正式版] 和 DLL版服务端 牵手版服务
公 告 声 明
灰鸽子工作室于2003年初成立,定位于远程控制、远程管理、远程监控软件开发,主要产品为灰鸽子远程控制系列软件产品。灰鸽子工作室的软件产品,均为商业化的远程控制软件,主要提供给网吧、企业及个人用户进行电脑软件管理使用;灰鸽子软件已获得国家颁布的计算机软件著作权登记证书,受著作权法保护。
然而,我们痛心的看到,目前互联网上出现了利用灰鸽子远程管理软件以及恶意破解和篡改灰鸽子远程管理软件为工具的不法行为,这些行为严重影响了灰鸽子远程管理软件的声誉,同时也扰乱了网络秩序。这完全违背了灰鸽子工作室的宗旨和开发灰鸽子远程管理软件的初衷。在此我们呼吁、劝告那些利用远程控制技术进行非法行为的不法分子应立即停止此类非法活动。
应该表明的是,灰鸽子工作室自成立以来恪守国家法律和有关网络管理的规定,具有高度的社会责任感。为有效制止不法分子非法利用灰鸽子远程管理软件从事危害社会的非法活动,在此,我们郑重声明,自即日起决定全面停止对灰鸽子远程管理软件的开发、更新和注册,以实际行动和坚定的态度来抵制这种非法利用灰鸽子远程管理软件的不法行为,并诚恳接受广大网民的监督。
灰鸽子工作室谴责那些非法利用远程控制技术实现非法目的的行为,对于此类行为,灰鸽子工作室发布了灰鸽子服务端卸载程序,以便于广大网民方便卸载那些被非法安装于自己计算机的灰鸽子服务端。卸载程序下载页面
灰鸽子工作室
2007年3月21日
卸载页面
黑客说的九号字体是什么
黑客字典就是一些常用字典的集合比如数字英文拼音然后在爆破测试对方时自动尝试尝试第一个不对尝试第二个依次尝试你说的这个东西可以搜索到的你搜索黑客字典很多的
把word中替换的部分字的颜色改成红色,高手请进!
你好!
先把“黑客”替换为“黑客hacker”
再把“hacker”黑色替换为红色,颜色的替换在“替换查找”框左下角的“高级”选项的“格式”---“字体”里面更改。
如果对你有帮助,望采纳。
黑客文字怎么做?
本实例编辑出很多的字母串从上到下又慢慢地消失的效果。本实例先使用文本工具,在舞台中编辑出文字内容,再运用分离功能,编辑出文本由亮到暗,再由暗到亮的动画效果,最后运用Action Scrip,使画面中出现多条字母串。
操作步骤:
1. 启动FLASH8,新建一空白FLASH文档。
2. Ctrl+J,打开文档属性对话框,设置尺寸:宽650px,高400px,背景色为黑色。
3. Ctrl+F8,打开创建新元件对话框,设置名称:文字,行为:影片剪辑。
4. 确定后进入元件文字的编辑画面。选择文本工具,设置字体为Adlib BT,字号为10,文本颜色为绿色(#00CC00),在舞台中输入文本“welcome to ”。
5. 选择舞台中的文字,按下Ctrl+B将文本分离。
6. 按Ctrl+Shift+D,将文字分散到层。
7. 现在图层1为空图层,我们可以将它删除掉。选择图层1,右击鼠标,选择删除命令。
8. 选择时间轴上的所有字母,按下Ctrl+B将字母分离,为所有图层的第45帧插入关键帧。
9. 选中所有的图层,在属性面板中设置补间为形状。
10. 选中所有的图层的第45帧,Shift+F9,打开混色器面板,将Alpha值调整到0%。
11. 选中图层2的第1帧,按住鼠标左键不放,再往后拖曳鼠标到第45帧,选中图层1的所有帧。
12. 将选中的帧全部往后拖一个帧格。
13. 用同样的方法将下面各个图层的帧的位置往后移,每往下一个图层多往后移动一个帧格。
14. 回到舞台,Ctrl+L,打开库面板。
15. 选择库面板中的文字,拖曳到舞台。
16. 在属性面板中设置文字实例的位置,X:373,Y:55。
17. 在属性面板中设置实例名称为w。
18. 选择图层1的第1帧,F9,打开动作面板输入脚本:
for(n=1;n75;n++){
duplicateMovieClip("w","w" add n,n);
setProperty("w" add n,_x,random(650)+1);
setProperty("w" add n,_y,random(200)+1);
setProperty("w" add n,_xscale,random(100)+1);
setProperty("w" add n,_yscale,random(125)+1);
}
脚本解释:
第1句:设置常量n,并赋值为1,设置循环条件为:n50时执行下列操作,每执行一次n+1。
第2句:复制实例名为w的元件,命名为”w” add n。
第3句:设置”w” add n的X坐标为0~650中随机的一个值再加1。
第4句:设置”w” add n的Y坐标为0~200中随机的一个值再加1。
第5句:设置”w” add n的宽为0~100中随机的一个值再加1。
第6句:设置”w” add n的高为0~125中随机的一个值再加1。
19. 本实例制作完毕,按Ctrl+Enter观看最终效果。
黑客帝国文字雨 flash 怎么制作
可用C语言编程来达到黑客文字雨的效果 。。。
效果如下:
代码如下,vc++编译通过 。。
#include windows.h
#define ID_TIMER 1
#define STRMAXLEN 25 //一个显示列的最大长度
#define STRMINLEN 8 //一个显示列的最小长度
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
typedef struct tagCharChain //整个当作屏幕的一个显示列,这是个双向列表
{
struct tagCharChain *prev; //链表的前个元素
TCHAR ch; //一个显示列中的一个字符
struct tagCharChain *next; //链表的后个元素
}CharChain, *pCharChain;
typedef struct tagCharColumn
{
CharChain *head, *current, *point;
int x, y, iStrLen; //显示列的开始显示的x,y坐标,iStrLen是这个列的长度
int iStopTimes, iMustStopTimes; //已经停滞的次数和必须停滞的次数,必须停滞的次数是随机的
}CharColumn, *pCharColumn;
int main(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("matrix") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if(!RegisterClass (wndclass))
{
MessageBox (NULL, TEXT ("此程序必须运行在NT下!"), szAppName, MB_ICONERROR) ;
return 0;
}
hwnd = CreateWindow (szAppName, NULL,
WS_DLGFRAME | WS_THICKFRAME | WS_POPUP,
0, 0,
GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
NULL, NULL, hInstance,
NULL) ;
ShowWindow (hwnd, SW_SHOWMAXIMIZED) ; //最大化显示
UpdateWindow (hwnd) ;
ShowCursor(FALSE); //隐藏鼠标光标
srand ((int) GetCurrentTime ()) ; //初始化随机数发生器
while (GetMessage (msg, NULL, 0, 0))
{
TranslateMessage (msg) ;
DispatchMessage (msg) ;
}
ShowCursor(TRUE); //显示鼠标光标
return msg.wParam ;
}
TCHAR randomChar() //随机字符产生函数
{
return (TCHAR)(rand()%(126-33)+33); //33到126之间
}
int init(CharColumn *cc, int cyScreen, int x) //初始化
{
int j;
cc-iStrLen = rand()%(STRMAXLEN-STRMINLEN) + STRMINLEN; //显示列的长度
cc-x = x+3 ; //显示列的开始显示的x坐标
cc-y =rand()%3?rand()%cyScreen:0; //显示列的开始显示的y坐标
cc-iMustStopTimes = rand()%6 ;
cc-iStopTimes = 0 ;
cc-head = cc-current =
(pCharChain)calloc(cc-iStrLen, sizeof(CharChain)); //生成显示列
for(j=0; jcc-iStrLen-1; j++)
{
cc-current-prev = cc-point; //cc-point一个显示列的前个元素
cc-current-ch = '\0';
cc-current-next = cc-current+1; //cc-current+1一个显示列的后个元素
cc-point = cc-current++; //cc-point = cc-current; cc-current++;
}
cc-current-prev = cc-point; //最后一个节点
cc-current-ch = '\0';
cc-current-next = cc-head;
cc-head-prev = cc-current; //头节点的前一个为此链的最后一个元素
cc-current = cc-point = cc-head; //free掉申请的内存要用current当参数
cc-head-ch = randomChar(); // 对链表头的 元素填充
return 0;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
//ctn 用来确定一个显示链是否 向下前进,如果等待次数超过必须等待的次数,ctn就代表要向下前进
int i, j, temp, ctn; //j为一个显示链中除链表头外的在屏幕上显示的y坐标,temp绿色过度到黑色之用
static HDC hdcMem;
HFONT hFont;
static HBITMAP hBitmap;
static int cxScreen, cyScreen; //屏幕的宽度 高度.
static int iFontWidth=10, iFontHeight=15, iColumnCount; //字体的宽度 高度, 列数
static CharColumn *ccChain;
switch (message)
{
case WM_CREATE:
cxScreen = GetSystemMetrics(SM_CXSCREEN) ; //屏幕宽度
cyScreen = GetSystemMetrics(SM_CYSCREEN) ;
SetTimer (hwnd, ID_TIMER, 10, NULL) ;
hdc = GetDC(hwnd);
hdcMem = CreateCompatibleDC(hdc);
hBitmap = CreateCompatibleBitmap(hdc, cxScreen, cyScreen);
SelectObject(hdcMem, hBitmap);
ReleaseDC(hwnd, hdc);
//创建字体
hFont = CreateFont(iFontHeight, iFontWidth-5, 0, 0, FW_BOLD, 0, 0, 0,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DRAFT_QUALITY, FIXED_PITCH | FF_SWISS, TEXT("Fixedsys"));
SelectObject(hdcMem, hFont);
DeleteObject (hFont) ;
SetBkMode(hdcMem, TRANSPARENT); //设置背景模式为 透明
iColumnCount = cxScreen/(iFontWidth*3/2); //屏幕所显示字母雨的列数
ccChain = (pCharColumn)calloc(iColumnCount, sizeof(CharColumn));
for(i=0; iiColumnCount; i++)
{
init(ccChain+i, cyScreen, (iFontWidth*3/2)*i);
}
return 0 ;
case WM_TIMER:
hdc = GetDC(hwnd);
PatBlt (hdcMem, 0, 0, cxScreen, cyScreen, BLACKNESS) ; //将内存设备映像刷成黑色
for(i=0; iiColumnCount; i++)
{
ctn = (ccChain+i)-iStopTimes++ (ccChain+i)-iMustStopTimes;
//
(ccChain+i)-point = (ccChain+i)-head; //point用于遍历整个显示列
//第一个字符显示为 白色
SetTextColor(hdcMem, RGB(255, 255, 255));
TextOut(hdcMem, (ccChain+i)-x, (ccChain+i)-y, ((ccChain+i)-point-ch), 1);
j = (ccChain+i)-y;
(ccChain+i)-point = (ccChain+i)-point-next;
//遍历整个显示列,将这个显示列里的字符从下往上显示
temp = 0 ; //temp绿色过度到黑色之用
while((ccChain+i)-point != (ccChain+i)-head (ccChain+i)-point-ch)
{
SetTextColor(hdcMem, RGB(0, 255-(255*(temp++)/(ccChain+i)-iStrLen), 0));
TextOut(hdcMem, (ccChain+i)-x, j-=iFontHeight, ((ccChain+i)-point-ch), 1);
(ccChain+i)-point = (ccChain+i)-point-next;
}
if(ctn)
(ccChain+i)-iStopTimes = 0 ;
else continue;
(ccChain+i)-y += iFontHeight; //下次开始显示的y坐标 为当前的y坐标加上 一个字符的高度
//如果开始显示的y坐标减去 整个显示列的长度超过了屏幕的高度
if( (ccChain+i)-y-(ccChain+i)-iStrLen*iFontHeight cyScreen)
{
free( (ccChain+i)-current );
init(ccChain+i, cyScreen, (iFontWidth*3/2)*i);
}
//链表的头 为此链表的前个元素,因为下次开始显示的时候 就相当与在整个显示列的开头添加个元素,然后在开始往上显示
(ccChain+i)-head = (ccChain+i)-head-prev;
(ccChain+i)-head-ch = randomChar();
}
BitBlt(hdc, 0, 0, cxScreen, cyScreen, hdcMem, 0, 0, SRCCOPY);
ReleaseDC(hwnd, hdc);
return 0;
case WM_RBUTTONDOWN:
KillTimer (hwnd, ID_TIMER) ;
return 0;
case WM_RBUTTONUP:
SetTimer (hwnd, ID_TIMER, 10, NULL) ;
return 0;
//处理善后工作
case WM_KEYDOWN:
case WM_LBUTTONDOWN:
case WM_DESTROY:
KillTimer (hwnd, ID_TIMER) ;
DeleteObject(hBitmap);
DeleteDC(hdcMem);
for(i=0; iiColumnCount; i++)
{
free( (ccChain+i)-current );
}
free(ccChain);
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}