- 博客(21)
- 资源 (21)
- 收藏
- 关注
原创 使用CImage类在对话框的背景上显示图片
最近,分配我这个苦力去做界面,现将此中的一个东东总结一哈子,以便让更多的苦力分享并共勉一盘子。 要使用CImage类,就在对话框类的头文件中定义一个:CImage类 CImage m_DlgBKImage; 再在此对话框的OnInitDialog中进行载入,方法为: char LoatFilePath[256] = "C://Documents and Settings
2009-08-07 16:29:00 3090
原创 数组经典
int a[5];当我们定义上面这么一个数组时,编译器根据指定的元素个数和元素的类型分配确定大小(元素类型大小*元素个数)的一块内存,并把这块内存的名字命名为a.a[0],a[1]等为a的元素,并非元素的名字.数组的每一个元素都是没有名字的.sizeof(a) 的值为sizeof(int ) *5 sizeof(a[0]) 为sizeof(int)sizeof(a[5]) 为4
2009-08-07 16:21:00 623
原创 ##的用法
和#一样 此运算符可以用于宏函数的替换部分.这个运算符把两个语言符号组合成单个语言符号.例如: #define MAN(woman) Man##woman 使用: MAN(Super) 展开就是:ManSuper
2009-08-07 16:18:00 23409
原创 # 其实也是个预处理
#也是预处理??是的 #define SQR(X) printf("the square of x is %d/n",((x)*(x)));如果这样用此宏:SQR(8); 则输出为: the square of x is 64引号中的x被当作普通文本来处理 而不是当作一个可以被替换的语言符号.假如你确定想在字符串包含宏参数,那我们就可以使用"#",它可以把语言符号转化为字符串,改上面的
2009-08-07 16:15:00 613
原创 #pragma的用法
在所有的预处理指令中 #pragma指令可能是最复杂的了 它的作用是设定编译器的状态或是指示编译器完成一些特定的动作.此指令对每个编译器给出了一个方法 在保持C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征.#pragma message("消息文本")当编译器遇到这条指令时就在编译输出窗口中将消息文本打印出来.当我们在程序中定义了许多宏来控制源代码版本的时候 我们自己有可能会忘记
2009-08-07 16:13:00 974
原创 define 定义的存在周期
#define x 3 //定义宏x为3#define y x*2 //定义宏y为x*2#undef x //取消对宏x的定义#define x 2 //重新定义宏x为2 int z = y;z为4 宏的生命期只在#define和undef间
2009-08-07 16:10:00 899
原创 可不可以用宏定义定义注释标记呢???
如例子: #define BSC // #define BMC /* #define EMC */ BSC my single-line comment BMC my multi-line comment EMC //通过以上二句我们想要得到的结果是://my single-line comment /*my multi-line comme
2009-08-07 16:06:00 2065 1
原创 Const变量与define之存储
const 定义的只读变量从汇编角度来看 只是给出了对应的内存地址 而不是像define一样给出的是立即数 所以 const定义的只读变量在程序运行过程中只有一份拷贝(因为它是全局的只读变量 存放在静态区) 而define定义的宏变量在内存中有若干个拷贝 define宏是在预编译阶段进行替换 而const修饰的只读变量是在编译的时候确定其值 define宏没有类型 而const修饰的只读变量具有特
2009-08-07 16:03:00 1917
原创 C自增(++)自减(--)运算之贪心法则
c语言有这样的一个规则:每一个符号应该包含尽可能多的字符.也就是说,编译器将程序分解成符号的方法是:从左到右一个一个字符地读入,如果此字符可能组成一个符号,那么再读入下一个字符,判断已经读入的两上字符组成的字符组成的字符串是否可能是一个符号的组成部分,如果可能,继续读入下一个字符,重复上述判断,直到读入的字符组成的字符串已不再可能组成一个有意义的符号.这个处理的策略被称为"贪心法".如:int
2009-08-07 15:57:00 1323
原创 左右移位操作的规则
0x01 0x01 以上这样行吗?? 不行. 一个整数长度为32位,左移32位 会溢出 左移-1位??? 左移和右移的位数不能大于数据的长度,不能小于0.
2009-08-07 15:54:00 1561
原创 #define和typedef比较
#define INT32 int unsigned INT32 i = 10; //正确 typedef int int32;unsigned int32 j = 10; //出错 为啥子喃 ??? 因为在预编译的时候INT32被替换为int 而unsigned int i = 10;语句是正确的 但是 用typedef取的别名不支持这种类型扩展. d
2009-08-07 15:39:00 1326
原创 何为柔性数组
c99中 结构中的最后一个元素允许是未知大小的数组 这就叫做柔性数组成员。但结构中的柔性数组前面必须至少一个其他 成员,柔性数组成员允许结构中包含一个大小可变的数组.sizeof返回的这种结构大小不包括柔性数组的内存.包含柔数组成员的结构用malloc函数进行内存的动态分配,且分配的内存应该大于结构的大小 以适应柔性数组的预期大小. 柔性数组到底如何使用:例子: typed
2009-08-07 15:37:00 113
原创 枚举系统进程方法
P r o c e s s 3 2 F i r s t和P r o c e s s 3 2 N e x t函数。 更加有趣的是,M i c r o s o f t的Windows NT开发小组因为不喜欢To o l H e l p函数,所以没有将这些函数添加给Windows NT。相反,他们开发了自己的Process Status函数,用于枚举进程(这些函数包含在P S A P I . d l l
2009-08-07 15:35:00 729
原创 进程终止运行时出现的情况
当进程终止运行时,下列操作将启动运行: 1) 进程中剩余的所有线程全部终止运行。 2) 进程指定的所有用户对象和G D I对象均被释放,所有内核对象均被关闭(如果没有其他 进程打开它们的句柄,那么这些内核对象将被撤消。但是,如果其他进程打开了它们的句柄, 内核对象将不会撤消)。 3) 进程的退出代码将从S T I L L _ A C T I V E改为传递给E x i t P r
2009-08-07 15:34:00 1474
原创 终止进程的运行的方法
若要终止进程的运行,可以使用下面四种方法: ? 主线程的进入点函数返回(最好使用这个方法)。 ? 进程中的一个线程调用E x i t P r o c e s s函数(应该避免使用这种方法)。 ? 另一个进程中的线程调用Te r m i n a t e P r o c e s s函数(应该避免使用这种方法)。 ? 进程中的所有线程自行终止运行(这种情况几乎从未发生)。
2009-08-07 15:31:00 2298
原创 得到系统版本号
Windows API 拥有下面的G e t Ve r s i o n 函数: DWORD GetVersion();该函数已经有相当长的历史了。最初它是为1 6 位Wi n d o w s 设计的。它的作用很简单,在高位字中返回M S - D O S 版本号,在低位字中返回Wi n d o w s 版本号。对于每个字来说,高位字节代表主要版本号,低位字节代表次要版本号。但是,编写该代码的程序
2009-08-07 15:28:00 789
原创 得到当前路径的几种方法
通过调用下面两个函数,线程能够获得和设置它的进程的当前驱动器和目录: DWORD GetCurrentDirectory( DWORD cchCurDir, PTSTR pszCurDir);BOOL SetCurrentDirectory(PCTSTR pszCurDir);注意可以使用C 运行期函数_ c h d i r ,而不是使用Wi n d o w s 的S e t C
2009-08-07 15:26:00 908
原创 环境变量的添加、删除、修改方法
使用S e t E n v i r o n m e n t Va r i a b l e 函数来添加变量、删除变量或者修改变量的值: BOOL SetEnvironmentVariable( PCTSTR pszName, PCTSTR pszValue);该函数用于将p s z N a m e 参数标识的变量设置为p s z Va l u e 参数标识的值。如果带有指定名字的变量已经
2009-08-07 15:23:00 1985
原创 程序能够使用的C / C + +运行期全局变量
变量名 类型 说明 _osver unsigned int 操作系统的测试版本。例如Windows 2000 Beta 3是测试版本2031 。因此_osver的值是2031 _winmajor unsi
2009-08-07 15:19:00 839
原创 字符编码ANSI和Unicode的比较
char szA[100]; //An ANSI string bufferWCHAR szW[100]; //A Unicode string buffer //Normal sprintf:all strings are ANSIsprintf(szA, "%s","ANSI Str"); //Converts Unicode st
2009-08-07 15:11:00 873
原创 C && C++函数定义小结
以下是一些细节问题,队长我先在这总结下:1)参数个数问题:如一个函数为:fun();在C++中意味着空的参数列表在C中意味着不确定的参数数目2)定义时函数返回值:C++必须指定而C不指定则被认为是返回 int
2009-08-03 21:18:00 792
UNIX网络编程第二卷-进程间通信-源代码
2012-04-12
手机基本原理(介绍各个部件的功能等)
2008-12-25
makefile(Gnumake)
2008-10-18
LINUX系统中动态链接库的创建与使用
2008-10-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人