当前位置: 首页 > java >正文

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编码的程序。
http://www.xdnf.cn/news/11442.html

相关文章:

  • javascriptvoid(0);用法及常见问题解析
  • 一文带你搞懂单模光纤和多模光纤的区别
  • 【存储数据恢复】某品牌EqualLogic系列存储介绍和数据恢复方法
  • QQ技术全攻略
  • 超详细从零开始实现打ab包,ab包上传服务器,从服务器上加载ab包(用nginx搭建文件服务器),实现热补丁功能(基于xLua)
  • 【LangServe部署流程】5 分钟部署你的 AI 服务
  • bcos简介及自序
  • Java语言常用的算法
  • 有哪些防爬虫的方法
  • Nexus下载与安装详解
  • c4d导入大模型以及给建筑上贴图笔记
  • CH9101芯片应用—硬件设计指南
  • 六个免费网站统计平台工具对比推荐 你的网站统计用哪个
  • 二代测序的原理和简介
  • 小程序测试:内容与方法剖析!
  • 『一篇就够了系列』Android App优化知识点全收
  • ssm基于安卓的健身appcgua5【独家源码】计算机毕业设计问题的解决方案与方法
  • location.hash详解
  • 【迅搜02】究竟什么是搜索引擎?正式介绍XunSearch
  • 什么是网络延时
  • 金仓数据库KingbaseES安全指南--6.5. LDAP身份验证
  • 权限控制方案
  • [面试]-- 65个最常见的面试问题与技巧性答复(面试技巧和注意事项)
  • 电脑系统提示找不到msimg32.dll如何处理?
  • 三极管的工作原理详解,图文+案例,立马教你搞懂
  • 【论文笔记】HeCo
  • Blash数集
  • 用代码打开网页
  • Beyond Compare 4 注册码,尝试可用
  • afxmessagebox和messagebox