博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年10月20日

摘要: MFC六大关键技术之——消息映射与命令传递 题外话:刚开始学视窗程序设计的时候,我就打印了一本Windows消息详解,里面列举了各种已定义消息的意义和作用,共10多页,在编程的时候翻翻,有时觉得很受用(这个学习方法好啊~)。我发觉很多编程的朋友,虽然每天都面对消息,却很少关注它。C++程序员有一个通病,很想写“自己”的程序,即每一行代码都想自己写出来。如果用了一些库,总希望能完全理解库里的类或函数是怎么一回事,否则就“不踏实”。对于消息,许多朋友只关心常用的几个,对其余的漠不关心。其实,Windows中有很多不常用的消息却很有用,程序员可能通过响应这些消息实现更简捷的编程。 说到消息,在M.. 阅读全文

posted @ 2011-10-20 14:10 猫少侠 阅读(1101) 评论(1) 推荐(1) 编辑

摘要: 1.下面的代码中编译器会报一个错误,你知道是哪个语句错了吗?typedef char * pStr;char string[4] = "abc";const char *p1 = string;const pStr p2 = string;p1++;p2++; 是p2++出错了。这个问题再一次提醒我们:typedef和#define不同,它不是简单的文本替换。上述代码中const pStr p2并不等于const char * p2。const pStr p2和const long x本质上没有区别,都是对变量进行只读限制,只不过此处变量p2的数据类型是我们自己定义的而不是 阅读全文

posted @ 2011-10-20 13:13 猫少侠 阅读(742) 评论(5) 推荐(0) 编辑

摘要: 理解复杂声明可用的“右左法则”:从变量名看起,先往右,再往左,碰到一个圆括号就调转阅读的方向;括号内分析完就跳出括号,还是按先右后左的顺序,如此循环,直到整个声明分析完。举例:int (*func)(int *p);首先找到变量名func,外面有一对圆括号,而且左边是一个*号,这说明func是一个指针;然后跳出这个圆括号,先看右边,又遇到圆括号,这说明(*func)是一个函数,所以func是一个指向这类函数的指针,即函数指针,这类函数具有int*类型的形参,返回值类型是int。int (*func[5])(int *);func右边是一个[]运算符,说明func是具有5个元素的数组;func的 阅读全文

posted @ 2011-10-20 12:42 猫少侠 阅读(391) 评论(0) 推荐(0) 编辑