VS2017创建第一个win32窗口程序(一)及其详细解释(API,SDK,句柄,WINAPI,WinMain,HINSTANCE,LPSTR,int...这些参数是什么意思?)

1.简要了解

1.API是什么意思?
Application programming interface 应用程序编程接口,可以理解为,是函数,是接口。

2.SDK是什么意思?
Software development kit 软件开发包,资源的集合
SDK编程=》win32编程

3.窗口的客户区和非客区
在这里插入图片描述
4.什么是句柄?
比如有窗口句柄,进程句柄…句柄就是这些资源的ID.标志着这些资源。

2.建立第一个win32

第一步

在这里插入图片描述

第二步

在这里插入图片描述
如果这一步不是选择的空项目,里面会有很多已经写好的东西,
在这里插入图片描述
如果选择的是控制台:
在这里插入图片描述

则运行会报如下错误:
在这里插入图片描述
改正方法:
属性=》连接器=》系统=》子系统=》窗口
在这里插入图片描述
再次运行就ok了

第三步

在这里插入图片描述

第四步:写上你的代码运行起来吧

#include<Windows.h>
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hpreHinstance, LPSTR lpCmdLine, int nCmdShow)
{
	//消息提示框
	MessageBox(NULL, L"我的第一个win32窗口程序", L"吃鞭炮", MB_OK);
	return 0;
}

第五步:运行起来,走一个

在这里插入图片描述

3.参数解读

#include<Windows.h>
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hpreHinstance, LPSTR lpCmdLine, int nCmdShow)
{
	//消息提示框
	MessageBox(NULL, L"我的第一个win32窗口程序", L"吃鞭炮", MB_OK);
	return 0;
}

//WINAPI :函数的调用约定(规定了参数入栈顺序)
是从右往左还是从左往右

//WINAPI : __stdcall
//C语言函数,默认的调用约定 __cdecl

//入口函数:WinMain, 不能改为其他名字

//HINSTANCE :应用程序实例句柄类型
转到定义看一看:

DECLARE_HANDLE(HINSTANCE);

再转定义:

#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name

把name替换为HINSTANCE

DECLARE_HANDLE(HINSTANCE);

#define DECLARE_HANDLE(HINSTANCE) 
struct HINSTANCE__{
	int unused;
};
typedef struct HINSTANCE__ *HINSTANCE;

看来他就是一个结构体指针。

//hInstance:当前应用程序实例句柄, 简单理解(代表当前exe)
//hPreInstance: 当前应用程序的前一个实例句柄, 32为系统上已经废弃了,不用了, NULL, 16为机器上的.
在这里插入图片描述

//LPSTR: => char* 命令行参数
第一次是CHAR*

typedef _Null_terminated_ CHAR *NPSTR, *LPSTR, *PSTR;

小写的char,就是大写的CHAR

typedef char CHAR;

所以LPSTR,就是char*

什么是命令行参数?
比如我们直接在cmd–>notepad时候,打开了一个空记事本呢
在这里插入图片描述
加上命令行参数时,直接打开了我桌面的hello.txt
在这里插入图片描述
//int:
// nCmdShow:窗口的显示方式. 最大化,最小化,隐藏等

MessageBox:消息框

MessageBox(NULL, L"我的第一个win32窗口程序", L"吃鞭炮", MB_OK);

消息框功能创建、显示和操作消息框。消息框包含应用程序定义的消息和标题,以及预定义图标和按钮的任意组合。

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

第一个参数 :HWND hwnd 窗口句柄,父窗口是谁,没有父窗口,我就是独立的窗口

第二个参数:显示的文本,加“L”是告诉编译器,我这个字符串要使用Unicode编码。不加可不行,因为我的工程就是unicode字符集
在这里插入图片描述

第三个参数:标题

第四个参数:就是那个确定按钮

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敲折耳根的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值