精通WindowsAPI学习笔记.docx
- 文档编号:2442295
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:18
- 大小:292.50KB
精通WindowsAPI学习笔记.docx
《精通WindowsAPI学习笔记.docx》由会员分享,可在线阅读,更多相关《精通WindowsAPI学习笔记.docx(18页珍藏版)》请在冰豆网上搜索。
精通WindowsAPI学习笔记
精通Windows_API学习笔记
第一章Windows应用程序开发入门
1.#pragmacomment什么意思及作用?
作用:
这行代码指明将源文件编译成目标文件(.obj)后,将目标文件链接成可执行文件的过程中需要使用到User32.lib。
如果在链接程序中,调用链接器的参数指明了链接时需要使用到的User32.lib,这一种程序代码可以省略。
2.更新SDK版本方法
在环境变量中,设置SDK的值。
设置方式
3.解决方案
解决方案是指若干工程的集合。
一般大型的应用程序,都不是一个可执行文件构成的,可能包括一个exe文件、若干个dll文件等。
一个解决方案下可能有零个至多个工程,每个工程可以生成一个可执行文件。
4.使用makefile编译程序
将makefile文件和start.c文件放在同一个目录下。
在开始菜单“VisualStudioTools”目录下找到“VisualStudio2005\2008命令提示”(CommandPrompt)并运行。
切换到上述两个文件所在的目录,运行,nmake.exe
第二章WindowsAPI概要
1.Windows数据类型
最常用的有DWORD,HANDLE,LPTSTR,WORD,BYTE,CHAR等。
HANDLE类型的变量用于唯一标识一个对象。
LPSTR类型的数据是字符串,也是字符指针;
CHAR是字符;
DWORD是32位的无符号整数;
INT是32位有符号整数;
#include
#pragmacomment(lib,"User32.lib")
intWinMain(__inHINSTANCEhInstance,
__in_optHINSTANCEhPrevInstance,
__in_optLPSTRlpCmdLine,
__inintnShowCmd)
{
MessageBox(NULL,"开始学习Windows编程","消息对话框",MB_OK);
//定义字符串
LPSTRszString="Windowsdatatype,string.";
//定义字符数组
CHARlpString[120];
//定义DWORD类型的数据
DWORDdwMax=0xFFFFFFFF;
DWORDdwOne=0x1;
//定义INT类型的数据
INTiMax=0xFFFFFFFF;
INTiOne=0x1;
//显示字符串
MessageBox(NULL,szString,"LPSTR",MB_OK);
//复制内存
CopyMemory(lpString,szString,lstrlen(szString)+1);
//显示复制的字符串
MessageBox(NULL,lpString,"CHAR[]",MB_OK);
if(dwMax>dwOne)
{
MessageBox(NULL,"DWORD类型的数据xFFFFFFFF>0x1","DWORD",MB_OK);
}
if(iMax { MessageBox(NULL,"INT类型的数据xFFFFFFFF>0x1","INT",MB_OK); } return0; } 这些Windows数据类型都是从标准C数据类型经过类型重定义而来。 BOOL布尔型变量,值只能是true或false BYTE字节类型,8位 CHAR8比特字节,ANSI CONST常量,相当于标准C中的const关键字 DWORD32字节无符号整型数据 DWORD3232字节无符号整型数据 DWORD6464字节无符号整型数据 FLOAT浮点数据类型 HANDLE对象的句柄,最基本的句柄类型 HICON图标的句柄 HINSTANCE程序实例的句柄 HKEY注册表键的句柄 HMODULE模块的句柄 HWND窗口的句柄 INT32位符号整型数据类型 INT_PTR指向INT类型数据的指针类型 INT3232位符号整型 INT6464位符号整型 LONG32位符号整型,相当于C语言的标准数据类型long LONGLONG64位符号整型 LONG3232位符号整型 LONG6464位符号整型 LPARAM消息的L参数 WPARAM消息的W参数 LPCSTRWindows,ANSI,字符串常量 LPCTSTR根据环境配置,如果定义了UNICODE宏,则是LPCWSTR类型,否则是LPCSTR类型 LPCWSTRUNICODE字符串常量 LPDWORD指向DWORD类型数据的指针 LPSTRWindow,ANSI,字符串变量 LPTSTR根据环境配置,如果定义了UNICODE,则是LPWSTR类型,否则是LPSTR类型 LPWSTRUNICODE字符串变量 SHORT无符号短整型,16位 SIZE_T表示内存大小,以字节为单位,其最大值是CPU最大寻址范围 TCHAR如果定义了UNICODE,则为WCHAR,否则为CHAR UCHAR无符号CAHR UNIT无符号INT ULONG无符号LONG VOID无类型,相当于标准C语言的Void WCHAR16位Unicode字符 WINAPIWindowsAPI的函数类型调用方式,常见于SDK头文件中对API函数的声明中,相当于_stdcall,更严格地说,这不是数据类型,而是一种函数调用约定。 WORD16位无符号整型数据 2.Unicode和ASIN Unicode是世界通用的字符编码标准,使用16位数据表示一个字符,一共可以表示65535种字符。 ASNI字符集,使用8位数据或将相邻的两个8位的数据组合在一起表示特殊的语言字符。 如果一个字节是负数,则将其后续的一个字节组合在一起表示一个字符。 这种编码方式的字符集也称作“多字节”字符集。 第三章开发工具配置与使用 1.编译链接重要作用文件 VC/bin: c1.exe、link.exe、lib.exe、rc.exe VC/Include: stdlib.h、stdio.h VC/lib: c1.exe: 文件时VisualC\C++的编译器,它将程序源代码文件编译为obj文件。 rc.exe: 文件时资源编译器。 工程项目中的.rc文件中包含了对程序中所使用资源,菜单和图标等的描述。 Rc.exe将.rc格式的文件编译为.res文件,供链接器链接到可执行文件中。 Link.exe: 是Windows平台的链接器,它将c1.exe编译生成的obj文件,资源编译器生成的.res文件,以及lib目录下的lib文件等链接成可执行的exe文件、dll文件等。 2.编译选项 【1】常规 AdditionalIncludeDirectories /AI 指定包含目录。 Resole#usingReferences DebugInformationFormat /Z7/Zi/ZI 生成调试信息,分别表示三种不同的调试符号文件格式。 SuppressStartupBanner /nologo 取消显示登录版权标志。 WarningLevel /Wn 设置警告级别。 Detect64-bitPortabilityIssues /Wp64 检测64位可移植性问题。 TreatWarningsAsErrors /WX 将所有编译讲稿视为错误。 UseUNICODEResponseFiles 【2】与程序优化有关的编译选项 Optimization /O1/O2/Od /O1表示代码体积;最小/O2代码速度最快;/Od不使用优化。 InlineFunctionExpansion /Ob1/Ob2 控制内联函数展开。 /Ob1表示适用于_inline的情况;/Ob2表示使用于所有情况。 EnableIntrinsicFunctions /Oi 生成内部函数。 FavorSizeorSpeed /Os/Ot /Os代码大小优先;/Ot代码速度优先。 OmitFramePointers /Oy 省略帧指针(仅限x86)。 EnableFiber-safeOptimizations /GL 启用全程序优化。 WholeProgramOptimization /GT 支持使用静态线程本地存储区分配的数据和线程安全。 【3】与预处理有关 PreprocessorDefinitions /D 定义常量和宏。 可以将此符号与#i或#ifdef一起使用,以便有条件地编译源文件。 在源文件中遇到重定义或用#undef的指令取消定义符号之前,符号定义保持有效。 与在源文件的开头使用#define指令的效果基本相同。 IgnoreStandardIncludePath /X 忽略标准包含目录 GeneraterPreprocessedFile /P/EP /P将预处理器输出写入文件 /EP将预处理器输出复制到标准输出 KeepComments /C 在预处理期间保留注释 【4】与代码生成有关的编译选项 EnableStringPooling /GF 启用字符串池 EnableMinimalRebuild /GM 启用最小重新生成 EnableC++Exceptions /EH 指定异常处理模型 /EH: a表示捕获异步(结构化)异常并通知编译器假定ExternC函数确实引发了异常的异常处理模型。 /EH: s不捕获异步异常并通知编译器假定ExternC函数确实引发了异常的异常处理模型。 /EH: c如果与a一起使用,则为捕获异步异常的异常处理模型,如果与s一起使用,则为不捕获异步异常的异常处理模型。 在这两种情况下,c通知编译器假定ExternC函数从不引发异常 SmallerTypeCheck /RTCc BasicRuntimeChecks /RTCs RuntimeLibrary /MT /MD指使用MSVCRT.lib创建多线程DLL; /MDd使用MSVCRTD.lib创建调试多线程DLL; /MT使用LIBCMT.lib创建多线程可执行文件; /MTd使用LIBCMTD.lib创建多线程可执行文件 StructMemberAlignment /Zp 结构成员对齐,以字节为单位。 BufferSecurityCheck /Gs 控制堆栈探测 EnableFunction-LevelLinking /Gy 启动函数级链接 EnableEnhancedInstructionSet /arch 使用SSE或SSE2指令生成代码,对程序进行优化(仅限X86) FloatingPointModel /fp 指定浮点行为 EnableFloatingPointExceptions 【5】与语言相关 DisableLanguageExtensions /Za 禁用微软语言扩展和启动微软语言扩展 /Za将与标准C++或标准C不兼容的语言构造标志位错误。 /Ze则启用微软语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精通 WindowsAPI 学习 笔记