随笔分类 - C/C++
摘要:语法 HHOOK WINAPI SetWindowsHookEx( __in int idHook, __in HOOKPROC lpfn, __in HINSTANCE hMod, __in DWORD dwThreadId);基本概念 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目...
阅读全文
摘要:用#pragma data_seg建立一个新的数据段并定义共享数据,其具体格式为:#pragma data_seg ("shareddata")HWND sharedwnd=NULL;//共享数据#pragma data_seg()-----------------------------------------------------------------------------------------------------1,#pragma data_seg()一般用于DLL中。也就是说,在DLL中定义一个共享的,有名字的数据段。最关键的是:这个数据段中的全局变量可
阅读全文
摘要:提到printf函数以后,就必然要提到sprintf函数 sprintf() 函數是C 語言用來格式化的主要方法,其函數原形如下所示。 int sprintf ( char * str, const char * format, ... ); 太多详细的用法还没有了解到,只是说明自己的理解 spri...
阅读全文
摘要:编辑本段VC声明 DWORD GetLastError(VOID); 编辑本段说明 针对之前调用的api函数,用这个函数取得扩展错误信息(在vb里使用:在vb中,用Err 对象的GetLastError属性获取GetLastError的值。这样做是必要的,因为在ap...
阅读全文
摘要:Note:1、class定义时,前面不能有修饰符。(如果是在.NET平台上开发的话,可以设置/clr编译选项)2、class中的成员默认是private的,而struct和union中的成员默认是public的。(C#中class和struct里面的所有成员默认都是private)3、子类是class,父类默认是private继承; 子类是struct,父类默认是public继承; 而Unions不能继承其他的对象。如下:class BaseClass{public:int age;protected:int sex;};class MyClass1 : BaseClass // 默认是pri
阅读全文
摘要:原则上,C++类中私有变量不允许在类之外的其他任何地方访问,一般来说功能完善的类都会提供get,set方法来操作类属性值,但如果没有get、set方法都没有提供,比如使用的是第三方提供的.o(或者动态库)来进行开发的,并且实际应用中我们确确实实需要改变其中某个对象的一个私有参数,有没有什么办法呢?我们知道,一个进程有程序段和数据段,如果我们知道了对象的数据空间,那么得到该对象的成员变量值也就很简单了,而实际上,对象数据段的首地址其实就是对象地址,以例子说明:class A{public:int i;bool setJ(int _j){j = _j;};int getJ() const {ret
阅读全文
摘要:当要进行底层移植的时候肯定会遇到这些问题。特整理了下。java语言基本数据类型在JAVA中一共有八种基本数据类型,他们分别是byte、short、int、long、float、double、char、boolean整型其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1)short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1)int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)lo
阅读全文
摘要:我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些 函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出 类。但是,MSDN文档里面,对于__declspec(dllimport)的说明让人感觉有点奇怪,先来看看MSDN里面是怎么说的:不使用 __declspec(dllimport) 也能正确编译代码,但使用 __declspec(dllimport) 使编译器可以生成更好的代码。编译器之所以能够生成更好的代码
阅读全文
摘要:new和delete运算符用于动态分配和撤销内存的运算符new用法:1.开辟单变量地址空间1)new int; //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a.2)int *a = new int(5) 作用同上,但是同时将整数赋值为52.开辟数组空间一维: int *a = new int[100];开辟一个大小为100的整型数组空间二维: int **a = new int[5][6]三维及其以上:依此类推.一般用法:new 类型 [初值]delete用法:1. int *a = new int;d
阅读全文
摘要:1,#pragma data_seg()一般用于DLL中。也就是说,在DLL中定义一个共享的,有名字的数据段。最关键的是:这个数据段中的全局变量可以被多个进程共享。否则多个进程之间无法共享DLL中的全局变量。2,共享数据必须初始化,否则微软编译器会把没有初始化的数据放到.BSS段中,从而导致多个进程之间的共享行为失败。3,你所谓的结果正确是一种错觉。如果你在一个DLL中这么写:#pragma data_seg("MyData")int g_Value; // Note that the global is not initialized.#pragma data_seg()
阅读全文
摘要:GlobalFree HeapFree LocalFree与C函数free的区别与联系GlobalFree是释放空间并且使得句柄无效 对应的申请函数是GlobalAlloc和GlobalRellocHeapFree是释放HeapAlloc和HeapRelloc申请的空间LocalFree是释放LocalAlloc和Localrelloc申请的空间free对应的是malloc 和relloc同样是释放函数,但是有对应关系 一种申请要用对应的释放函数来释放 一个萝卜一个坑也就是你malloc了 就不能用delete来释放 只能用其对应的free前三个函数是windows API,后一个是C运行时库
阅读全文

浙公网安备 33010602011771号