2021-02-22Win3200
请注意,本文编写于 645 天前,最后修改于 645 天前,其中某些信息可能已经过时。

目录


1. 什么是Win32 API? 有哪些? 在哪里?

主要是存放在 C:\WINDOWS\system32(64位) 及C:\Windows\SysWOW64(32位)下面所有的dll

几个重要的DLL:

<1> Kernel32.dll:最核心的功能模块,比如管理内存、进程和线程相关的函数等。

<2> User32.dll:是Windows用户界面相关应用程序接口,如创建窗口和发送消息等。

<3> GDI32.dll:全称是Graphical Device Interface(图形设备接口),包含用于画图和显示文本的函数。

2. 关于Win32的数据类型

c
Win32没有什么新的类型,所谓的新的类型无非就是给原有的类型重新起了一个名字,
原因主要是:
1. 将所有类型进行一个统一,看起来可读性更好
2. 如果真正涉及到跨平台,就将原来的数据类型修改一下就好了,就不需要对代码进行重写了

int MessageBox(
	  HWND hWnd,          // handle to owner window
	  LPCTSTR lpText,     // text in message box
	  LPCTSTR lpCaption,  // message box title
	  UINT uType          // message box style
	);

3. 常用数据类型

c
汇编:
	byte 		        BYTE		PBYTE
	word		        WORD		PWORD
	dword		        DWORD		PDWORD
C语言:
	char		        CHAR		PCHAR
	unsigned char	    UCHAR		PUCHAR
	short		        SHORT		PSHORT
	unsigned short	    USHORT	    PUSHORT
	int		            INT		    PINT
	unsigned int	    UINT		PUINT
C++语言:
	bool		        BOOL

4. 在Win32中使用字符串

  • 字符类型:
c
CHAR  szStr[] = “中国”;          //char
WCHAR  swzStr[] = L“中国”;       //wchar_t
TCHAR stzSr[] = TEXT(“中国”);    //TCHAR 根据当前项目的编码自动选择char还是wchar_t
  • 字符串指针:
c
PSTR  pszStr = “中国”;           //char*
PWSTR pwszStr = L“中国”;         //wchar_t*
PTSTR ptszStr = TEXT(“中国”);    //PTSTR 根据当前项目的编码自动选择如char*还是wchar_t*

5. 第一个Win32 API的使用

c
CHAR szTitle[] = "标题";
CHAR szContent[] = "Hello World!";
MessageBoxA(0,szContent,szTitle,MB_OK);
c
WCHAR swzTitle[] = L"标题";
WCHAR swzContent[] = L"Hello World!";
MessageBoxW(0,swzContent,swzTitle,MB_OK);
c
TCHAR stzTitle[] = TEXT("标题");
TCHAR stzContent[] = TEXT("Hello World!");
MessageBox(0,stzContent,stzTitle,MB_OK);

区别:
结尾带A的,只接收ASCII编码的参数
结尾带W的,只接收Unicode编码的参数
在新的操作系统中,实际上在调用A结尾的API,系统底层会再次调用W结尾的API,然后再进入内核,所以为了效率可以直接调用W结尾的API

本文作者:Na1r

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!