内容列表
- 深入解析钩子和动态链接库(中)
- 你必须做的第一件事是创建共有的数据段。 所以我们使用 # pragma data_seg 声明。 使用某一好记的数据段名字(它必须是没有比8 个字符长) 。我想强调名字是任意的,这里使用了我自己的名字。 我发现如果我使用好的名字象 .SHARE 或.SHR 或.SHRDATA,别人会认为名字有特殊的意义。 但是,我要说NO。
# pragma
- 分类:VC语言 查阅全文
- 深入解析钩子和动态链接库(上)
- 下载源代码 - 22 Kb
对于如何使用和创建钩子有许多的争议,这篇文章试图澄清这些问题。
注意:如果你只是在自己的进程内使用钩子则不会有下面的问题, 这只发生在你使用系统钩子的时候。
关键问题在于 地址空间,DLL函数中的代码所创建的任何对象(包括变量)都归调用它的线程或
- 分类:VC语言 查阅全文
- 公历转农历(C版本)
- 前段时间做软件写了个公历转农历的函数,目前公开给大家参考,有兴趣的朋友可以在此基础上进一步完善其功能
/*------------农历转换函数-----------*/char *GetDayOf(PSYSTEMTIME pSt){ /*天干名称*/ const char *cTianGan[] = {
- 分类:VC语言 查阅全文
- WTL for MFC Programming实践篇 --- 一个自定义ComboBox的移植过程(下)
- 《程序员修炼之道》说当你想说这不可能的时候,往往是你在调用的方法上出现了错误。
我们重新回到起点,来看看那里出了错。仔细地研读代码以后发现,事件是怎么传递到MSG_MAP的呢?难道我们通过赋值将一个窗体句柄传进来,我们在这个类中定义的MSG_MAP就能自动的连接到这个句柄上吗?这显然是真的不可能。
那么没有将MSG_MAP连接到窗体句柄很可能是控件类无法收到任何事件的原因。那么如何将MSG_M
- 分类:VC语言 查阅全文
- WTL for MFC Programming实践篇 --- 一个自定义ComboBox的移植过程(上)
- WTL for MFC Programming实践篇
--- 一个自定义ComboBox的移植过程
&n
- 分类:VC语言 查阅全文
- 怎么用ado打开带密码的access数据库
- 经常有人在网上问到怎么使用ado来打开带有密码的access数据库,下面我来详细介绍使用udl文件来打开带有密码的access数据库。
假设access数据库文件client.mdb打开密码是“cxw”。
&nb
- 分类:VC语言 查阅全文
- CString,string,char*的综合比较(三)
- 接上篇...
(八) MFC中常用字符串结构图(此非比较,但为了方便查阅就一并算在这儿了)
(九) 总结
综上所述,我个人认为,在MFC、ATL中使用字符串尽量使用CString,毕竟都是微软的孩子,各方面都比其它更有优势,而在非微软平台上或对移植性要求较高的场合推荐使用string,标准模板库提供了那么强大的泛型算法,没必要再自己去造车轮。
(十)
- 分类:VC语言 查阅全文
- CString,string,char*的综合比较(一)
- (一) 概述
string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;
CString(typedef CStringT<TCHAR, StrTraitMFC<TCHAR>> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL
- 分类:VC语言 查阅全文
- 视频捕获 之 如何使用系统设备枚举器
- 如何使用系统设备枚举器
系统设备枚举器为我们按类型枚举已注册在系统中的Fitler提供了统一的方法。而且它能够区分不同的硬件设备,即便是同一个Filter支持它们。这对那些使用Windows驱动模型和KSProxy Filter的设备来说是非常有用的。系统设备枚举器对它们按不同的设备实例进行对待(译注:虽然它们支持相同Filter)。
当我们利用系统设备枚举器查询设备的时候,系
- 分类:VC语言 查阅全文
- 一个验证连接超时的类CSock
- 在用CSocket类进行网络通信时,我们会遇到验证连接超时的问题,CSocket在断开socket连接时不返回固定的时间,这样就降低了程序性能。下面介绍的这个类解决了这个问题。 只要输入超时的时间,程序就会返回这个时间值。 CSock类重载了CSocket类的成员函数ConnectHelper。
/// CSocket modify - tim
- 分类:VC语言 查阅全文
- COM样例(三)——组件端代码
-
COM样例(三)
——组件端代码
本文为此系列文章的重点,前面设计的接口都只是辅助性质,与COM线程模型没有一点关系。由于客户和和组件实现的接口IModule、IModuleSite等都包有界面的传递,出于利用MFC的界面包装功能而都使用MFC来实现,故全部运行在STA套间中,并可使得组件的窗口亦使用客户端主线程来派送消息。
&nbs
- 分类:VC语言 查阅全文
- C++学习笔记-后台服务程序开发模式(一)
- 一直感觉VC++太复杂了,但昨天看了汪蒲阳编著的因特网应用编程,其中写到后台服务程序的编写,论述的非常详细,而且逻辑清晰,看了之后感觉明白不少,故拿来与需要之人共享,并更正了原程序的一些错误,补充了一些材料。另外还有一种用C++编写后台服务程序的思路(不算.NET上服务程序开发模型),以后整理好了再发上来。
在2000/XP等基于NT 的操作系统中,有一个
- 分类:VC语言 查阅全文
- C++学习笔记-后台服务程序开发模式(二)
- 2.服务入口点函数
服务入口点函数 service_main 首先调用系统函数 RegisterServiceCtrlHandler 注册服务控制处理函数 service_ctrl,然后调用 ReportStatusToSCMgr 函数,它通过系统函数 SetServiceStatus 更新服务的状态,然后调用特定的服务初始化入口函数 ServiceStart 完成具体的初始化工
- 分类:VC语言 查阅全文
- C++学习笔记-后台服务程序开发模式(三)
- 4.安装服务程序
每个已安装服务程序在 HKEY_LOCAL_MACHINE\SYSTE\CurrentControlSet\Services 下都有一个服务名的关键字,程序员可以调用系统函数 CreateService 安装服务程序,并指定服务类型,服务名等。这个函数创建一个服务对象,并将其增加到相关的服务控制管理器数据库中。
下面是函数
- 分类:VC语言 查阅全文
- C++学习笔记-后台服务程序开发模式(四)
- 5.停止和删除已安装的服务程序
//停止和删除已安装的服务程序
void removeService()
{
SC_HANDLE schService;
SC_HANDLE schSCManager;
//
- 分类:VC语言 查阅全文
- ADO 数据库连接
- 这些天一直在学习ADO 数据库连接,感觉比较复杂,所以一边学习,一边使用,一边做了一些笔记,下面的一些东西就是我总结的一些关于ADO数据库连接方面的东西,因为是笔记,所以不一定很有序,贴出来的意思一方面是可以给大家一个参考,一边也有希望大家一起来完善的意思,其中错误和不足之处当然希望大家可以及时地通知我,在贴上来的时候,我有一个想法,因为我在使用的过程中,总是会遇上一些莫明其妙的错误,所以我想大家
- 分类:VC语言 查阅全文
- C++类机制的实现细节
- 为了搞清楚VC中类的实现专门写了一个最简单的类,用来观察它的实现过程,代码如下:// test.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "CTest.h"int main(int argc, char* argv[]){CTest aTest;aTest.a(1,
- 分类:VC语言 查阅全文
- 如何在一个应用程序中打开其他的应用程序
-
有些时候,我们需要在一个应用程序中打开另外的应用程序,我这几天就做了这样的事,总结了一些东西,希望可以跟大家一起分享和交流一下。其中有可能有一些东西是错误的或者走了弯路,恳请大家能够给我提意见!另外我这些天一直在学习多线程与多进程,期待找到一些共同进步的人!
 
- 分类:VC语言 查阅全文
- 让VB开发环境支持鼠标滚轮
- Visual Basic 6.0的集成开发环境中的代码编辑器不支持鼠标滚轮的操作,这给使用VB的人带来了很多不便,为了使它能支持鼠标滚轮操作,我制作了一个小程序帮它实现该功能。
这个程序实现的原理是,使用全局钩子截获窗口消息,通过相应滚轮
- 分类:VC语言 查阅全文
- C++中++的探讨
- 一。对++N的研究对{ int nTest = 1; int nTwo = (++nTest)+(++nTest)+.....;}对于这种计算 首先++nTest计算的nTest = 2,然后++nTest计算的nTest = 3,在第二次计算时,把第一次计算结果的冲掉,然后相加的4,后面的计算和我们一般的理解一样。
二。对N++的研究对{ int nTest =
- 分类:VC语言 查阅全文