VC++深入详解·chapter 01·笔记
1、API:Application Programming Interface 应用程序开发接口 SDK:Software Development Kit 软件开发包 CS_:Class Style 类样式(16位的常量,只有某一位为1,位标志) DC:Device Context 设备描述表 MFC:Microsoft Foundation Class 微软基础类库 GDI:Graphic Device Interface Dockable:可停靠 floatable:可浮动 2、回调函数与__stdcall Callback Function 在__stdcall方式下,函数的参数按从右到左的顺序压入堆栈,除了明确指明是指针或引用外,参数都按值传递,函数返回之前自己负 责把参数从堆栈中弹出。其实简单说回调函数就是你所写的函数满足一定条件后,被DLL调用! 也有这样的说法(比较容易理解): 回调函数就好像是一个中断处理函数,系统在符合你设定的条件时自动调用。为此,你需要做三件事: 1)声明; 2)定义; 3)设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于DLL调 用。 3、去掉某一位:style=style &~ CS_VREDRAW 4、菜单并不是一个窗口 5、MAKEINTRESOURCE MAKEINTRESOURCE 的作用: 是把一个"数字形ID",转化为"字符串".但是执行前后,输入的数据的内容和长度是不变的!它只不过就是C语言里面"强制类型转换"而已. 请看 Winuser.h 代码: #define MAKEINTRESOURCEA(i) (LPSTR)((DWORD)((WORD)(i))) #define MAKEINTRESOURCEW(i) (LPWSTR)((DWORD)((WORD)(i))) #ifdef UNICODE #define MAKEINTRESOURCE MAKEINTRESOURCEW #else #define MAKEINTRESOURCE MAKEINTRESOURCEA #endif // !UNICODE 现在,再来归纳它的用法.就用FindResource来说明.(这个函数与MFC的AfxFindResourceHandle) HRSRC FindResource( HMODULE hModule, // module handle LPCTSTR lpName, // resource name LPCTSTR lpType // resource type ); 就是lpName参数需要使用MAKEINTRESOURCE ,因为它需要LPCTSTR类型的参数输入.那么,情况就很清楚了.凡涉及"资源"的API或者MFC类 ,在参数类型为LPCTSTR时,就应该使用 MAKEINTRESOURCE.这是针对"资源名字"为"数字类型"时的情况. 但是,当你使用的资源没有数字ID,而仅仅是用"字符串"来识别的话,就直接把这个标识资源名字的"字符串"当做参数传入,而不必使用 MAKEINTRESOURCE了 6、VS2005中设置调用约定:项目--属性--C/C++--高级--调用约定 7、可以调用GetStockObject函数来得到系统的标准画刷 GetStockObject The GetStockObject function retrieves a handle to one of the stock pens, brushes, fonts, or palettes. HGDIOBJ GetStockObject( int fnObject // stock object type ); 8、error C2440: “=”: 无法从“const char [11]”转换为“LPCWSTR” 处理方法: 方法1:修改VS2005的设置:选择你的项目-》属性-》常规-》设置为不使用UNICODE,发现设置为多字节字符集也可以。发现用 VS2005打开VC6的源代码,转换后是使用的多字节字符集。 方法2:修改代码.字串前加TEXT宏.如 hwnd=CreateWindow(TEXT( "Weixin2003 "), TEXT( "北京维新科学技术培训中心 "),WS_OVERLAPPEDWINDOW, 0,0,600,400,NULL,NULL,hInstance,NULL); WinMain改为_tWinMain等. char 统统换成TCHAR 字符串换成 _T("字符串"); 不论是否是UNICODE编码 都应该如此 因为编译的时候 会根据是否定义了UNICODE 来选择编译WCHAR还是char。 ps:对初学者,可以不使用UNICODE,但以后还是要学会编写UNICODE编码的程序。 |