posted @ 2011-10-20 13:13 猫少侠 阅读(742) 评论(5) 推荐(0) 编辑
摘要:
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的数据类型是我们自己定义的而不是 阅读全文
摘要:
理解复杂声明可用的“右左法则”:从变量名看起,先往右,再往左,碰到一个圆括号就调转阅读的方向;括号内分析完就跳出括号,还是按先右后左的顺序,如此循环,直到整个声明分析完。举例: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) 编辑
摘要:
我的MFC单文档工程,出现如题错误。这个错误是在使用了CString类的LoadStringW函数后出现的,但是把它注释后也一样又错了:1 CString str;2 str = "视频监控";3 pDC->TextOutW(50, 20, str);4 5 str.LoadStringW(IDS_STRING312);6 pDC->TextOutW(300, 20, str);按照网友的方法:修改如下设置:工程->属性->配置属性->c/c++->代码生成->运行时库->多线程调试DLL(/MDd)。还是没能解决。。。发现是 阅读全文
posted @ 2011-10-19 23:11 猫少侠 阅读(3058) 评论(0) 推荐(0) 编辑
摘要:
今天MFC程序编译后,无聊进工作空间看,发现一个Release版本静态链接的程序就有>2M,哇嚓真的很大啊!然后看了下资料,发现在vs2010里面,那个CxxxApp类是从CWinAppEx类继承的,而非先前的CWinApp类。 再使用如下方法替换CWinAppEx为CWinApp: 1.直接在 stdafx.h 里 #define CWinAppEx CWinApp 就可以替换了 2.或者直接一个Ctrl+H,替换所有的CWinAppEx为CWinApp 改了之后重新编译,大小变为400多k。 可是为什么使用CWinApp类编译以后的文件会比CWinAppEx类小呢? 哥... 阅读全文
posted @ 2011-10-15 08:53 猫少侠 阅读(2296) 评论(5) 推荐(2) 编辑
摘要:
今天写了一些代码,下面是一部分。运行没有错误,但是就是什么窗口都没有创建显示出来。于是debug,发现hwnd即CreateWindow返回值为空。为什么呢?想了好久,网上也找了很多资料。最后发现是窗口过程函数LRESULT CALLBACK WindowProc写得有问题,于是一步步差错修正(很水的错误,不贴出来了)。最后运行成功,窗口显示正常!// 创建窗口HWND hwnd;hwnd = CreateWindow(_T("myClassName"), _T("my Window Name"), WS_OVERLAPPEDWINDOW, 0, 0, 阅读全文
posted @ 2011-10-14 21:01 猫少侠 阅读(1555) 评论(0) 推荐(3) 编辑
摘要:
方法一:方法一只针对新手,在vs2010中修改编码格式: 右键工程——》 选择“Properties”——》 选择“Configuration Properties”——》 再选择“General”——》 最后把“Project Default”下的“Character Set”修改为“Use Multi-Byte Character Set”(默认为“Use Unicode Character Set”) 这样对新手来说,就省了很多类型显示转换的工夫。但是这对学习windows不好,因为这样无法理解windows编程的特性、字符格式的原理。有精力还是不要用方法一,多折腾下就好了,... 阅读全文
posted @ 2011-10-14 10:41 猫少侠 阅读(8103) 评论(0) 推荐(4) 编辑
摘要:
形象地说:SendMessage类似于快递员,要等到客户拿到商品才能走人; PostMessage相当于邮递员,把信封送到信箱就走人了。1、首先是返回值意义的区别,我们先看一下 MSDN 里的声明:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);BOOL PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam); 其中 4 个参数的意义是一样的,返回值类型不同(其实从数据上看他们一样是一个 32 位的数,只是意义不一样),LRESULT 表示的. 阅读全文
posted @ 2011-10-14 10:24 猫少侠 阅读(687) 评论(0) 推荐(0) 编辑
摘要:
我在草稿上计算过很多次了,最后得到的游戏坐标和窗口坐标的变换公式的确是:W(x)=(G(x)-G(y))*cos(α/2)W(y)=(G(x)+G(y))*sin(α/2)G(x)=(W(y)*cos(α/2)+W(x)*sin(α/2))/(sinα)G(y)=(W(y)*cos(α/2)-W(x)*sin(α/2))/(sinα)由于α=60 导致cos(α/2) = sinα sin(α/2) = cosα相关开发知识可以参考深蓝博文:http://www.cnblogs.com/alamiye010/archive/2009/06/17/1505344.html 阅读全文
posted @ 2011-09-08 21:23 猫少侠 阅读(881) 评论(1) 推荐(0) 编辑