1.1第一个实例程序
1.1.1 start.exe
话不多说,先上代码:
//头文件
#include <windows.h>
//连接时使用User32.lib
#pragram comment <lib,User32.lib>
//windwos应用程序示例
int WinMain(
_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPSTR lpCmdLine,
_In_ int nCmdShow)
{
//调用API函数Massage Box
MessageBox(NULL,
TEXT("开始学习Windows内核编程"),
TEXT("我是标题"), MB_OK);
return 0;
}
编译运行一下,如下图:
这里出现了一个问题,鄙人用的是Visual Studio 2022的版本,
所以按照书本的方式输入代码会出现一个警告
这里百度了一下,解决方式就是再WinMain里的参数加上:
In:输入参数
Out:输出参数
In_opt:可选的输入参数
具体原因,就我目前水平,解释不了,所以略过
1.1.2 Windows API
API = Application Program Interface
意思就是应用程序接口
是一系列函数、宏、数据类型、数据结构的集合
应用程序可以使用这些操作系统提供的接口来完成应用程序需要的功能
1.1.3程序入口函数
WinMain 函数是程序入口点, 相当于 C 语言的 main 函数, 其定义如下:
int WinMain(
HINSTANCE hlnstance,
HINSTANCE hPrevlnstancef
LPSTR lpCmdLinef
int nCmdShow);
□ hInstance 表示应用程序本次运行的实例句柄
□ hPrevInstance 应用程序之前运行的实例句柄,始终未NULL。
□ lpCmdLine 运行时的参数。在cmd中运行。
□ nCmdShow 表示 应用程序窗口(如果有)的显示状态
1.1.4start.cpp 代码分析
#include <windows.h>
windows.h是Windows应用程序开发中常用的头文件,包含了很多的数据类型,机构,API结构函数,并且包含了很多的头文件。
#pragram comment <lib,User32.lib>
这行代码指明将源文件编译生成目标文件(.obj) 后, 将目标文件链接成可执行文件的过程中需要使用到 User32.lib, 因为 User32.lib 中包含 MessageBox 的链接信息。 如果在链接程序时,调用链接器的参数中指明了链接时需要使用到 User32.lib, 这一句程序代码可以省略。
MessageBox:
{
int MessageBox(
HWND hWnd,
LPCTSTR IpText,
LPCTSTR lpCaption,
DINT uType
}
□ hWnd 是消息框所属的窗口的句柄, 可以设置为 NULL.
□ IpText 是字符串,表示消息框所显示的消息。
□ IpCaption 是字符串, 表示消息框的标题。
□ uType 是消息框的类型,按钮 “MB_OK ”, 意思是消息框包含一个确定” 按钮。