QQ尾巴病毒的Visual C++实现探讨
HOT

自2003起,QQ尾巴病毒可以算是风光了一阵子。它利用IE的邮件头漏洞在QQ上疯狂传播。中毒者在给别人发信息时,病毒会自动在信息文本的后边添上一句话,话的内容多种多样,总之就是希望信息的接收者点击这句话中的URL,成为下一个中毒者。  下面我将要讨论的,就是QQ尾巴病毒使用的这一技术。由于病毒的源代码无法获得,所以以下的代码全是我主观臆断所得,所幸的是效果基本与病毒本身一致。   粘贴尾巴  首先...
阅读全文

接触VC之二:MFC类基础,C++程序编写规范介绍
HOT

由于本文是面对C语言基础的(因为我就是从C学起来的),而MFC是利用C++类技术构建起来的。因此有必要在此为只了解C的朋友们,普及一下C++语言中类的概念。熟悉C++的朋友可以跳过本部分。 从总体来说C++是向下兼容C的,你可以很不费力气地将用C编好了的程序拿到C++环境下编译执行。其C++只不过是在C的基础上添加面向对象技术(OOP),也就是类的概念,且值得一提的是C与C++都是由美国的贝尔实验...
阅读全文

3.6 MFC中所提供的各种视类介绍
HOT

 MFC中提供了丰富的视类供开发者使用,下面对各个类进行介绍:CView类是最基本的视类只支持最基本的操作。CScrollView类提供了滚动的功能,你可以利用void CScrollView::SetScrollSizes( int nMapMode, SIZE sizeTotal, const SIZE& sizePage = sizeDefault, const SIZE&...
阅读全文

3.5 利用序列化进行文件读写
HOT

 在很多应用中我们需要对数据进行保存,或是从介质上读取数据,这就涉及到文件的操作。我们可以利用各种文件存取方法完成这些工作,但MFC中也提供了一种读写文件的简单方法——“序列化”。序列化机制通过更高层次的接口功能向开发者提供了更利于使用和透明于字节流的文件操纵方法,举一个例来讲你可以将一个字串写入文件而不需要理会具体长度,读出时也是一样。你甚至可以对字符串数组进行操作。在MFC提供的可自...
阅读全文

3.4 文档,视,框架之间相互作用
HOT

 一般来说用户的输入/输出基本都是通过视进行,但一些例外的情况下可能需要和框架直接发生作用,而在多视的情况下如何在视之间传递数据。在使用菜单时大家会发现当一个菜单没有进行映射处理时为禁止状态,在多视的情况下菜单的状态和处理映射是和当前活动视相联系的,这样MFC可以保证视能正确的接收到各种消息,但有时候也会产生不便。有一个解决办法就是在框架中对消息进行处理,这样也可以保证当前文档可以通过框...
阅读全文

3.3 使用菜单
HOT

 利用菜单接受用户命令是一中很简单的交互方法,同时也是一种很有效的方法。通常菜单作为一中资源存储在文件中,因此我们可以在设计时就利用资源编辑器设计好一个菜单。关于使用VC设计菜单我就不再多讲了,但你在编写菜单时应该尽量在属性对话框的底部提示(Prompt)处输入文字,这虽然不是必要的,但MFC在有状态栏和工具条的情况下会使用该文字,文字的格式为“状态栏出说明\n工具条提示”。图33_g1...
阅读全文

3.2 接收用户输入
HOT

 在视中接收鼠标输入:鼠标消息是我们常需要处理的消息,消息分为:鼠标移动,按钮按下/松开,双击。利用ClassWizard可以轻松的添加这几种消息映射,下面分别讲解每种消息的处理。WM_MOUSEMOVE对应的函数为OnMouseMove( UINT nFlags, CPoint point ),nFlags表明了当前一些按键的消息,你可以通过“位与”操作进行检测。 MK_CONTROL...
阅读全文

3.1 文档 视图 框架窗口间的关系和消息传送规律
HOT

 在MFC中M$引入了文档-视结构的概念,文档相当于数据容器,视相当于查看数据的窗口或是和数据发生交互的窗口。(这一结构在MFC中的OLE,ODBC开发时又得到更多的拓展)因此一个完整的应用一般由四个类组成:CWinApp应用类,CFrameWnd窗口框架类,CDocument文档类,CView视类。(VC6中支持创建不带文档-视的应用)在程序运行时CWinApp将创建一个CFrameW...
阅读全文

2.6 多边形和剪贴区域
HOT

 多边形也是一个GDI对象,同样遵守其他GDI对象的规则,只是通常都不将其选入DC中。在MFC中多边形有CRgn表示。多边形用来表示一个不同与矩形的区域,和矩形具有相似的操作。如:检测某点是否在内部,并操作等。此外还得到一个包含此多边形的最小矩形。下面介绍一下多边形类的成员函数: CreateRectRgn 由矩形创建一个多边形 CreateEllipticRgn 由椭圆创建一个多边形 ...
阅读全文

2.5 使用各种映射方式
HOT

 所谓的映射方式简单点讲就是坐标的安排方式,系统默认的映射方式为MM_TEXT即X坐标向右增加,Y坐标向下增加,(0,0)在屏幕左上方,DC中的每一点就是屏幕上的一个象素。也许你会认为这种方式下是最好理解的,但是一个点和象素对应的关系在屏幕上看来是正常的,但到了打印机上就会很不正常。因为我们作图是以点为单位并且打印机的分辨率远远比显示器高(800DPI 800点每英寸)所以在打印机上图形...
阅读全文

2.3 使用点,刷子,笔进行绘图
HOT

 在Windows中画点的方法很简单,只需要调用COLORREF CDC::SetPixel( int x, int y, COLORREF crColor )就可以在指定点画上指定颜色,同时返回原来的颜色。COLORREF CDC::GetPixel( int x, int y)可以得到指定点的颜色。在Windows中应该少使用画点的函数,因为这样做的执行效率比较低。刷子和画笔在Win...
阅读全文

2.2 在窗口中输出文字
HOT

 在这里我假定读者已经利用ApplicationWizard生成了一个SDI界面的程序代码。接下来的你只需要在CView派生类的OnDraw成员函数中加入绘图代码就可以了。在这里我需要解释一下OnDraw函数的作用,OnDraw函数会在窗口需要重绘时自动被调用,传入的参数CDC* pDC对应的就是DC环境。使用OnDraw的优点就在于在你使用打印功能的时候传入OnDraw的DC环境将会是...
阅读全文

2.1 和GUI有关的各种对象
HOT

 在Windows中有各种GUI对象(不要和C++对象混淆),当你在进行绘图就需要利用这些对象。而各种对象都拥有各种属性,下面分别讲述各种GUI对象和拥有的属性。字体对象CFont用于输出文字时选用不同风格和大小的字体。可选择的风格包括:是否为斜体,是否为粗体,字体名称,是否有下划线等。颜色和背景色不属于字体的属性。关于如何创建和使用字体在2.2 在窗口中输出文字中会详细讲解。刷子CBr...
阅读全文
128 页 / 共 196