摘要:
首先说一下,批处理和高级语言不同,没有字符串处理函数,比如strcat之类的,但是却可以利用环境变量来实现这些函数的功能。本文对照C语言中的字符串处理函数,讲解在批处理中的实现方法。首先说一下字符串的存储,在C语言中,采用字符数组或者字符指针来存储字符串,而BAT中没有这些东东,所以要依靠环境变量来存储。设置环境变量的语句为set语句,本文不详细介绍了,参考set /?语句。1、C语中的strcp... 阅读全文
随笔分类 - C++
简明批处理教程(转)
2009-12-09 17:46 by Andy Ge, 229 阅读, 收藏,
摘要:
批处理文件是无格式的文本文件,它包含一条或多条命令。它的文件扩展名为 .bat 或 .cmd。在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。使用批处理文件(也被称为批处理程序或脚本),可以简化日常或重复性任务。当然我们的这个版本的主要内容是介绍批处理在入侵中一些实际运用,例如我们后面要提到的用批处理文件来给系统打补丁... 阅读全文
.obj, .lib, .dll, .exe的关系
2009-11-29 10:56 by Andy Ge, 364 阅读, 收藏,
摘要:
lib是和dll对应的。 lib是静态的库文件,dll是动态的库文件。 所谓静态就是link的时候把里面需要的东西抽取出来安排到你的exe文件中,以后运行 你的exe的时候不再需要lib。 所谓动态就是exe运行的时候依赖于dll里面提供的功能,没有这个dll,你的exe无法运 行。 lib, dll, exe都算是最终的目标文件,是最终产物。而c/c++属于源代码。源代码和最终 目标... 阅读全文
WIX资源
2009-11-04 14:33 by Andy Ge, 495 阅读, 收藏,
摘要:
WiX教程:WiX tutorial : http://www.tramontana.co.hu/wix/WiX 的主页: http://sourceforge.net/projects/wix/ WiX 的作者Rob Mensching(微软)的BLOG (A Must Read): http://blogs.msdn.com/robmen/default.aspx国内WIX使用BLOG:htt... 阅读全文
windows自定义消息
2009-09-30 09:02 by Andy Ge, 561 阅读, 收藏,
摘要:
Windows应用程序所要做的每项工作几乎都是基于消息处理的,Windows系统消息分为常用Windows消息,控件通知消息和命令。然而,有时我们需要定义自己的消息来通知程序什么事情发生了,这就是用户自定义消息。ClassWizard并没有提供增加用户自定义消息的功能,所以要使用用户自定义消息,必须手工编写代码。然后ClassWizard才可以象处理其它消息一样处理你自定义的消息。具体做法如下详解... 阅读全文
Windows消息机制要点
2009-09-30 08:32 by Andy Ge, 290 阅读, 收藏,
摘要:
1. 窗口过程 每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle),消息ID(Message ID),和两个消息参数(wParam, lParam), 当窗口收到消息时系统就会调用此窗口过程来处理消息。(所以叫回调函数)2 消息类型 1) 系统定义消息(System-Defined Messages) 在SDK中事先定义好的消息... 阅读全文
dll和lib文件的区别(转)
2009-09-22 09:42 by Andy Ge, 569 阅读, 收藏,
摘要:
(1)lib是编译时需要的,dll是运行时需要的。 如果要完成源代码的编译,有lib就够了。 如果也使动态连接的程序运行起来,有dll就够了。 在开发和调试阶段,当然最好都有。 (2) 一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有... 阅读全文
C++结构体实例和类实例的初始化(转)
2009-09-15 08:22 by Andy Ge, 398 阅读, 收藏,
摘要:
结构体实例(包括共用体)和类实例的初始化方法完全相同,二者都可以应用于继承层次中。不同点是结构体(包括共用体)默认成员为public,而类默认成员是private型的。 一、若类和结构体所有数据成员均为public型,可采取如下带花括号形式进行初始化。 注意:① 不论值的个数多少,都必须使用花括号定界② 未指定值的数据成员编译器会自动初始化为默认值③ 这种初始化... 阅读全文
const常量、指向常量的指针和常量指针(转)
2009-09-15 07:56 by Andy Ge, 236 阅读, 收藏,
摘要:
1)先看const常量的情况:const int a=2;int const b=c; // c是已经声明过的整型两者都可以。本地的const常量必须在第一次声明时就初始化,用变量或常量初始化都可以,只是初始化一次以后它的值就不能再改变了,此所谓const的含义。2)接着看指向常量的指针:const int *pa;int const *pa;两者也等价。因为指向常量的指针有时候会指向常量,所以它... 阅读全文
关于C中函数的可变参数va_list...(转)
2009-09-09 16:38 by Andy Ge, 701 阅读, 收藏,
摘要:
◎用法:func( Type para1, Type para2, Type para3, ... ){ /****** Step 1 ******/ va_list ap; va_start( ap, para3 ); //一定要“...”之前的那个参数 /****** Step 2 ******/ //此时ap指向第一个可变参数 //调用va_arg取得里... 阅读全文
VC++数据类型最佳解释
2009-09-08 11:31 by Andy Ge, 275 阅读, 收藏,
摘要:
PCSTR,PCWSTR,PSTRP = Pointer 指针C = Constant 常量T = Template 根据 _UNICODE 宏判定使用ANSI字符还是宽字符W = Wide Chararacter 宽字符 RD,DWORD,LPVOID,UINTWORD -> unsigned short DWORD -> unsigned lo... 阅读全文
内核态和用户态
2009-09-07 18:28 by Andy Ge, 394 阅读, 收藏,
摘要:
在内核态下,CPU可执行任何指令,在用户态下CPU只能执行非特权指令。当CPU处于内核态,可以随意进入用户态;而当CPU处于用户态,只能通过中断的方式进入内核态。一般程序一开始都是运行于用户态,当程序需要使用系统资源时,就必须通过调用软中断进入内核态。当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行... 阅读全文
在VS.net 2008中利用ATL来创建COM关于接口文件的引用变动
2009-09-02 10:10 by Andy Ge, 271 阅读, 收藏,
摘要:
在VS.net 2008中利用ATL来创建COM完成之后,如果需要使用这个COM,需要引入头文件,在VS.net 2005中,我们一般是引入COM的头文件,同时还有×_i.c文件。但是在VS.Net 2008中按照上述方式将通不过编译。需要更换头文件引用为“Generated Files"下的*_i.h文件。可以按照下面的博文构建一个简单的ATLCOMATL COM 入门 阅读全文
网络收藏夹
2009-08-28 17:39 by Andy Ge, 204 阅读, 收藏,
摘要:
COM技术初探(一)COM技术初探(二)C++箴言:将强制转型减到最少静态链接库LIB和动态链接库DLL的区别 创建和示例通过COM技术实现Windows Shell编程COM组件设计与应用之实现多接口CString总结Windows消息机制概述ATL的GUI程序设计(前言)ATL的GUI程序设计(1)ATL的GUI程序设计(2)ATL的GUI程序设计(3)ATL的GUI程序设计(4)MakeFi... 阅读全文
C++类型转换
2009-08-28 17:02 by Andy Ge, 249 阅读, 收藏,
摘要:
1、static_cast可以将子类和基类互相转换,只验证两者类型是否相关。如:子类到基类:CBase * pBase = new CDerived();CDerived * pDerived = static_cast<CDerived*>(pBase);//ok;基类到子类:CBase * pBase = new CBase();CDerived * pDerived = stat... 阅读全文
解析#pragma指令(转)
2009-08-28 15:40 by Andy Ge, 199 阅读, 收藏,
摘要:
在编写程序的时候,我们经常要用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作.下面介绍了一下该指令的一些常用参数,希望对大家有所帮助! 一. message 参数。 message 它能够在编译信息输出窗 口中输出相应的信息,这对于源代码信息的控制是非常重要的。其使用方法为: #pragma message(“消息文本”) 当编译器遇到这条指令时就... 阅读全文
vc静态加载dll和动态加载dll(转)
2009-08-27 17:06 by Andy Ge, 1115 阅读, 收藏,
摘要:
求vc静态加载dll和动态加载dll 比如我有个a.dll库,我想在我的mfc对话框项目中调用a.dll中的message函数请问怎样 静态加载dll或者动态加载dll 并调用 在线等 谢谢各位高手 支招 只答一个也可以 问题补充:编译器用的vs2005如果你有a.dll和a.lib,两个文件都有的话可以用静态加载的方式: message函数的声明你应该知道吧,把它的声明和下面的语句写到一个头文件... 阅读全文
extern用法详解(转)
2009-08-27 16:38 by Andy Ge, 229 阅读, 收藏,
摘要:
1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗? 答案与分析: 1)、不可以,程... 阅读全文
浙公网安备 33010602011771号