自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(130)
  • 资源 (7)
  • 收藏
  • 关注

原创 C++显式类型转换

 C++提供了四个显式的数据类型转换函数 1 reinterpret_cast(在编译期间实现转换)  reinterpret_cast类型转换函数将一个类型的指针转换成另一个类型的指针。这种转换不用于修改指针变量值数据存放的格式(不改变指针变量值),只需在编译期间重新解释指针的类型就可以做到。  reinterpret_cast可以将指针值转换为一个整型数。但是不能用于非指针类型

2008-12-26 16:58:00 1321

原创 向其他进程注入代码的三种方法

 

2009-03-09 19:51:00 597

原创 setsockopt()用法

 1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历TIME

2009-03-09 01:13:00 529

原创 同步 异步 阻塞 非阻塞的区别

 同步:函数没有执行完不返回,线程被挂起阻塞:没有收完数据函数不返回,线程也被挂起异步:函数立即返回,通过事件或是信号通知调用者?非阻塞:函数立即返回,通过select通知调用者?这样看来异步和非阻塞有什么区别呢?异步=非阻塞?同步是在操作系统层面上,阻塞是在套接字上?Reactor是同步 Proactor是异步?回答:同步、异步、阻塞和非阻塞的概念在进行网络编程时,我们常常见到同步、异步、阻塞和

2009-03-09 01:05:00 690

原创 WaitForMultipleObjects

 WaitForMultipleObjects用法探索   WaitForMultipleObjects是Windows中的一个功能非常强大的函数,几乎可以等待Windows中的所有的内核对象(关于该函数的描述和例子见MSDN

2009-03-09 00:59:00 616

原创 局部模板特化

 *********************************************** *    模板局部特化 * *          首先要声明的是,C++还不支持对函数模板的局部特化, *    所以此处我们只讨论类模板的局部特化. *          我们依然首先需要一个主模板.(参考类模板显式特化)  *    自我理解: *          如果针对不能的指针定义不同的完

2009-03-08 23:36:00 1169

原创 使用MFC的数组类

 MFC 的数组类支持的数组类似于C++中的常规数组,可以存放任何数据类型。C++的常规数组在使用前必须将其定义成能够容纳所有可能需要的元素,而MFC数组 类创建的对象可以根据需要动态地增大或减小,数组的起始下标是0,而上限可以是固定的,也可以随着元素的增加而增加,数组在内存中的地址仍然是连续分配 的。  MFC定义了数组模板类CArray,并针对各种常用变量类型定义了CByteArray,C

2009-03-08 18:44:00 1141

原创 CString 操作指南

 1、CString 对象的连接  能体现出 CString 类型方便性特点的一个方面就字符串的连接,使用 CString 类型,你能很方便地连接两个字符串,正如下面的例子:CString gray("Gray");CString cat("Cat");CString graycat = gray + cat;要比用下面的方法好得多:char gray[] = "Gray";char

2009-03-08 18:43:00 498

原创 VC其它- VC常用小技巧

 让窗口一启动就最大化 把应用程序类(CxxxApp)的 InitInstance() 函数中的m_pMainWnd->ShowWindow(SW_SHOW); 改为m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED);则窗口一启动就最大化显示。 如何设置窗口的初始尺寸 在将应用程序类(CxxAPP)的 InitInstance() 函数中加入:m_pMainWnd

2009-03-08 18:41:00 621

原创 制作弹出式菜单按钮

 下面,我们看一下它的制作过程:一、新建一个以CButton类为基类的新类单击“Insert”→“New Class”,建立一个新类。基类设置为CButton,新类起名为CMenuButton。二、利用自绘方法绘制按钮主体区显示按钮文本,选择区画一个小箭头在CMenuButton类中用ClassWizard添加函数:PreSubclassWindow()和DrawItem()。PreSub

2009-03-08 18:40:00 1020

原创 Winsock开发网络通信程序的经典入门

 对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手。许多概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)等,初学者往往迷惑不清,只知其所以而不知起所以然。   同步方式指的是发送方不等接收方响应,便接着发下个数据包的通信方式;而异步指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式。   阻塞套接字是指执行此套

2009-03-08 18:39:00 818

原创 在MFC类中各种类的指针的获取和应用

 关于MFC下的文档和视图以及框架之间的访问, 这些问题已经是老生常谈了,但我觉得还是都没有详细的说明,特    别是对于英语较差的人,我查看了一些blog,总结了一下!希望对和我一样的人有点帮助!    1:  因为对于SDI程序,主框架窗口就是文档框窗(如果这个也不知道,就要查看一下MFC下的单文档的构成原理了).  下面所说的是关于单文档的.    例子: 在CMainFrame框架中如何得

2009-03-08 18:38:00 672

原创 句柄大讨论

 在Windows程序设计中,句柄是无法精确定义的术语。随便找一个高手,让他给你讲讲句柄是什么,恐怕他都很难给你一个具体的定义来。     在Windows程序设计中,句柄无所不在,窗口有窗口的句柄HWND,线程和进程也有句柄HANDLE,甚至有人把套接字也称为句柄(我就是这样的)。     句柄在英文中是handle,作为动词讲是处理的意思。简而言之,句柄是处理 对象 的一个接口,对于程序中

2009-03-08 18:36:00 475

原创 VC++中的自定义消息

 在VC++中想加入自定义消息,以下方法可供参考 ……1 首先定义消息:例如define WM_MYMESSAGE (WM_USER+100)2 在.H文件中,加入消息响应函数,如:LONG OnMyMessage(WPARAM w,LPARAM l); 该函数有规定的格式:LONG Function_Name(WPARAM w,LPARAM l); 3 加入消息响应宏在响应该消息的类中,在消息响

2009-03-08 18:34:00 461

原创 C/C++数组名与指针区别深入探索

指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C语言的教学过程中也错误得给学生讲解:"数组名就是指针"。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着"数组名就是指针"的误解。  想必这种误解的根源在于国内某著名的

2009-03-08 18:28:00 725 1

原创 VC6下开发WTL的办法

 介绍在VC6里使用新版本WTL。转贴过来: http://www.cppblog.com/wlwlxj/archive/2005/12/19/1885.html 终于找到VC6下开发WTL的办法,就是安装platformsdk,下载地址: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

2009-03-08 16:14:00 696

原创 WTL 学习笔记 -- 几则技巧

 l         在WTL项目中插入ATL控件。有点不明白,WTL本身就是扩展ATL,但WTL向导产生的工程,竟不能使用ATL控件。还得手工加一些东西来欺骗VS6,VS6才让插入ATL控件。1.         在工程增加一个Atl.idl文件,并排除在编译之外。library Atl { }; 2.         在源文件加入一个

2009-03-08 16:12:00 864

原创 WTL 学习笔记 -- ActiveX

 在Win32下,ActiveX控件已经是个耳熟的概念了,即使对COM不太了解,使用ActiveX控件仍然是件容易的事件。即然是控件,无非要关注两个方面,第一是如何调用它的函数,其次是如何接收它的事件。 我们看看在WTL中如何使用ActiveX控件(基本对话框):1.         创建项目时,让对话框支持ActiveX。从代码中,可以发现一些差异://对

2009-03-08 16:08:00 1064

原创 WTL 学习笔记 -- Property Sheets and Wizards

 属性页和向导也是很常用的组件,两者表现形式大不相同,但功能差不多,无非前者所有界面同时出现,而后者要按规定的次序出现罢。MFC中提供属性页组件,实在太难用,现在还记忆犹新。 WTL中的属性页是否有所改进呢?答案是当然的,对于简单情况,几行代码就搞定了,对于复杂情况,使用也很直观,总之你无需要花太多精力在这种手段身上。 让我们先看看最很简单的情况:   

2009-03-08 16:08:00 673

原创 WTL 学习笔记 -- DDX 和 DDV

 DDX 初看时有点神秘,它把控件和相关变量关联起来了,两者在适当的时候自动进行同步。比如你在初始化时给变量赋了初值,控件上自动显示该值; 而在界面上修改了控件上的值后,它自动反应到对应的变量上去。 我们先看看如何使用DDX:1.         包含相关头文件#include  2.         让对话框从CWinDataE

2009-03-08 16:07:00 1012

原创 WTL 学习笔记 -- CSplitterWindow

 SplitterWindow在Win32下已经用得很普遍了,但是并没有这样一个基本控件,用SDK开发应用程序,如果有需要,就得自己写这样一个控件。MFC里提供了这样一个控件,但只能在SDI/MDI里使用,而不能在对话框里使用。 实现这样一个控件倒不难,记得N年前,曾经在PB6里写过这样一个东东。自己实现毕竟比较麻烦,如果有现成当然是最好了。如果用WTL开发软件,算是比较走运,因为WT

2009-03-08 16:06:00 1017

原创 WTL 学习笔记 -- ResizeDialog

 写过一个ActiveX控件,只要把它放在对话框上,它遍历对话框上的所有控件,并把它们管理起来,只要对话框大小变化时,它自动调整各个控件的大小和位置。这可能是我写的第一个ActiveX控件,比较失败,虽然功能实现了,但只是无条件的缩放控件的大小和位置,结果是有的控件变得很难看。 WTL里已经内置这种功能,不用我们自己实现了。它提供了一个CdialogResize类,帮助实现自动调整对话框上

2009-03-08 16:05:00 1009

原创 WTL 学习笔记 -- 消息流

 正如刚从DOS转到Win32下写程序时,总是为找不到main函数而感到不爽,学习时WTL时,第一反应是找GetMessage和DispatchMessage,想知道消息是如何分发到窗口的。 在_tWinMain里做了一些初始化函数之后,就进入了Run函数,显然Run函数就是消息循环。下面是Run函数的代码: int Run(LPTSTR /*lpstrCm

2009-03-08 15:33:00 1182 1

原创 在CPP中调用Jscript中的函数

 在CPP中调用Jscript中的函数 在C++中调用Jscript的函数非常简单,Windows提供了一个msscript.ocx的控件,利用这个控件可以直接操作Jscript: 执行一段Jscript脚本,或者调用指定的函数。我写了一个简单的例子: l         导入msscript.ocx。下面这条指令会在项目目录中生成msscript.tli和msscript.t

2009-03-08 15:31:00 625

原创 实现COM消息广播

 大家都知道,为ActiveX控件添加事件处理函数是件容易的事情,IDE已经提供相应的Wizard,为ActiveX控件添加事件处理函数和为一般控件添加事件处理函数没有什么两样。而为普通COM组件添加事件处理函数,就没有这么直观了,必须手工编写相关代码。 如果完全手工去编写这些代码,可以说是相当的麻烦,实际上相当编写另外一个COM组件给原组件调用,至少要实现IDispatch接口才行。

2009-03-08 15:30:00 527

原创 SAFEARRAY使用方法示例

 l         创建                            long i = 0;                            VARIANT va = {0};                            va.vt = VT_BSTR;                                     

2009-03-08 15:29:00 788

原创 模板局部特化

2009-03-08 10:52:00 436

原创 重载函数模板匹配约定

    **************************重载函数模板匹配约定***************************      同名的函数模板、模板显式特化函数和普通函数的优先选择顺序,总结出以下4点:  1.如果参数类型以及返回类型完全匹配,则选择普通函数或者模板显式特化函数作为调用的函数实例。  2.否则,如果模板函数能够推导出一个参数类型以及返回类型完全匹配的函数实例,

2009-02-28 21:55:00 1065

原创 什么情况下可能出现临时对象?

 1、传值参数(pass-by-value parameter) 代码: void func(String str) { cout << str; }当进行这样一个调用时:代码: String s; func(s);s将被拷贝构造一个备份(临时对象),这个备份参与函数体内的运算,原件不会被改动。2、返回值(return valu

2009-02-27 17:46:00 1487

原创 函数返回值

 众所周知,C++函数可以传入引用参数和返回引用。   函数引用参数避免了过多的指针操作,对加强函数的可读性很有帮助;另外,在传入体积很大的类型的变量时,引用参数可以避免拷贝对象,加快程序运行效率。    函数支持引用型的返回值是为什么呢?这个问题要一分为二:对于类类型的引用返回值,函数可以使用在使用重载运算符的串联表达式中,而不必担心构造多个对象。  #inclu

2009-02-27 17:18:00 907

原创 vc++之剪贴板通信实例

 操作系统中实现同一台机器上的不同进程之间的通信是非常重要的。一般来说,进程间的通信方法有三种:剪贴板、邮槽和管道。由于后两种方式需要一定的操作系统基础,此处就不作介绍。本节将详细介绍采用剪贴板进行进程通信的实现。剪贴板常用函数读者应该对剪贴板是比较熟悉的,当按下【Ctrl+C】键时,选中的内容就会复制到剪贴板中,然后再按下【Ctrl+V】键,可以将剪贴板上的内容复制到应用程序中。说明:当要把一个

2009-02-27 15:58:00 1378

原创 C++的多态性实现机制剖析

 1.   多态性和虚函数我们先看一个例子:例1- 1#include iostream.h>class animal{public:       void sleep()       {              coutendl;       }       void breathe()       {              co

2009-01-10 02:33:00 1625

原创 C++多态技术---静态多态和动态多态

多态(polymorphism)一词最初来源于希腊语polumorphos,含义是具有多种形式或形态的情形。在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”。和纯粹的面向对象程序设计语言不同,C++中的多态有着更广泛的含义。除了常见的通过类继承和虚函数机制生效于运行期的动态多态(dynamic polymorphism)外,模板也允许将不同的特殊行为和单个泛化

2009-01-09 23:31:00 2533

原创 让赋值运算符返回一个指向 *this 的 引用

 关于赋值有许多有趣的事情,其中之一就是:你可以把赋值操作连在一起: int x, y, z; x = y = z = 15;                        // 一连串的赋值 令一件有趣的事是:这一赋值工作是自右结合的,所以上面的赋值链可以解析成这样: x = (y = (z = 15)); 在这里, 15 首 先赋 值给 z ,然后这次赋值的结果

2009-01-06 22:57:00 946

原创 尽可能使用 const

 const令人赞叹之处就是:你可以通过它来指定一个语义上的约束(一个特定的不能够更改的对象)这一约束由编译器来保证。通过一个const,你可以告诉编译器和其他程序员,你的程序中有一个数值需要保持恒定不变。不管何时,当你需要这样一个数时,你都应该这样做,这样你便可以让编译器来协助你确保这一约束不被破坏。const 关键字的用途十分广泛。在类的外部,你可以定义全局的或者名字空间域的常量,也可

2009-01-06 22:30:00 693

原创 深入探究内联函数

 内联函数——多么振奋人心的一项发明!它们看上去与函数很相像,它们拥有与函数类似的行为,它们要比宏(参见第 2 条)好用的多,同时你在调用它们时带来的开销比一般函数小得多。可谓“内联在手,别无他求。” 你得到的远远比你想象的要多,因为节约函数调用的开销仅仅是冰山一角。编译器优化通常是针对那些没有函数调用的代码,因此当你编写内联函数时,编译器就会针对函数体的上下文进行优化工作。然而大多数编译

2009-01-06 22:29:00 832

原创 引用

 1. 声明引用变量的方法是在类型名后面加一个&符号,实际上&与变量名捆绑使用,如:string &str;2. 一个引用指向一个对象,是现有对象的别名3. 一旦创建了引用并初始化引用某特定对象,那么它将总是引用此对象4. 常量引用不能用于更改它所引用的对象5.对常量的引用可以用其他任何引用来初始化,非常量引用不能通过一个常量的引用来初始化6. 如果一个引用保存在某对象中,它必须在此对象构造函数的

2009-01-06 21:14:00 589

原创 C++中const用法总结

 1. const修饰普通变量和指针const修饰变量,一般有两种写法: const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。 对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value只不可变。 例如: const int nValue;

2009-01-06 14:31:00 574

原创 常量指针 和 指针常量

 在C++的学习中,有人经常搞不清楚“常量指针”和“指针常量”这两个概念。其实简单一点讲,“常量指针”所指向的地址上的数据是常量,而“指针常量”所指向的地址是常量,地址上面的数据是可以变化的。     下面看几个简单的例子,可以说明他们的区别:            第一个 1 void main(){ 2     char *str1={"Hello"}; 3     char *str2=

2009-01-05 15:28:00 561

原创 适配器的编程

  反向迭代器 反向迭代器是一种反向遍历容器的迭代器。也就是,从最后一个元素到第一个元素遍历容器。反向迭代器将自增(和自减)的含义反过来了:对于反向迭代器,++运算将访问前一个元素,而--运算则访问下一个元素。 (1)反向迭代器需要使用自减操作符:标准容器上的迭代器(reverse_iterator)既支持自增运算,也支持自减运算。但是,流迭代器由于不能反向遍历流,因此流迭

2008-12-31 20:03:00 650

U盘启动minipe4外置程序

可以通过U盘来启动电脑

2008-02-28

U盘启动minipe4

可以通过U盘来启动电脑

2008-02-28

U盘启动minipe2

可以通过U盘来启动电脑

2008-02-28

U盘启动minipe2

可以通过U盘来启动电脑

2008-02-28

U盘启动minipe

可以通过U盘来启动电脑

2008-02-28

xp密码破译

xp密码破译,xp密码破译

2008-02-28

.NET技术内幕

.NET技术内幕的技术课件

2008-01-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除