Windows编程基础

0x01.Windows编程入门

windows编程是在软件开发的时候必须要调用到的api,微软官方已经打包好的
可以在c,c++等其他程序开发调用api,也可以使用单独的创建win32项目

#include <stdio.h>
#include <windows.h>

//这是win32的入口程序
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdline, int nCMDshow)
{

}

如果遇到某些错误的问题的话,可以使用GetLastError()来获取错误
DWORD errorCode = GetLastError();

例子:

#include <stdio.h>
#include <windows.h>

//这是win32的入口程序
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdline, int nCMDshow)
{
      TCHAR szContent[] = TEXT("内容");
      TCHAR szTitle[] = TEXT("标题");
      MessageBox((HWND)0, szContent, szTitle, -1);
      DWORD errorCode = GetLastError();
}

这时候就得到了错误,就可以在顶上那一行 -> 工具 ->错误查找
然后输入错误码,就可以知道错在哪里了

0x02. Win32 api的宽字节

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

主要是存放在 C : WINDOWSsystem32 下面所有的dll

2、非常重要的几个DLL

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

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

GDI32.dll : 全称是Graphical Device Interface(图形设备接口), 包含用于画图和显示文本的函数
比如要显示一个程序窗口,就调用了其中的函数来画这个窗口

3、Win32 API中的宽字符和多字节字符

Windows是使用C语言开发的,Win32 API同时支持宽字符与多字节字符.

(1) 字符类型
(2) 字符串指针


char 	CHAR		PSTR(LPSTR) 指向多字节字符串

wchar_t  WCHAR			PWSTR(LPWSTR) 指向宽字符串

宏   TCHAR			宏  	PTSTR(LPTSTR)

字符数组赋值


CHAR cha[] = "中国";

WCHAR chw[] = L"中国";

TCHAR cht[] = TEXT("中国");

为字符串指针赋值:

PSTR pszChar = "china";				//多字节字符

PWSTR pszWChar = L"china";				//宽字符

PTSTR pszTChar = TEXT("china");				//如果项目是ASCII的 相当于"china" UNICODE 相当于L"china"

4、各种版本的MessageBox

MessageBoxA(0, "内容多字节", "标题", MB_OK);
MessageBoxW(0, L"内容宽字节", L"标题", MB_OK);
MessageBox(0, TEXT("根据项目字符集决定"), TEXT("标题"), MB_OK);
Windows提供的API 凡是需要传递字符串参数的函数,都会提供两个版本和一个宏.

0x03. Windows数据类型

c语言是专门开发操作系统的语言,之前就是专门开发Linux,然后就所有都用c语言开发

C语言数据类型:

char      short      int
char*     void       VOID*
char*     const char*   .....

Windows数据类型是在C语言的基础上的新的一个命名

Windows数据类型

BOOL      BYTE      CHAR
CONST     DWORD     DWORD32
DWORD64   FLOAT     HANDLE
HICON     HINSTANCE HKEY
HMODULE   HWND      INT
PVOID     ..... 

原文地址:https://www.cnblogs.com/0x7e/p/13813964.html