1. 主页 > 世界杯新浪 >

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

vs2017建立第一个win32窗口程序

1.简要了解2.建立第一个win32第一步第二步第三步第四步:写上你的代码运行起来吧第五步:运行起来,走一个

3.参数解读

1.简要了解

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

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

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

2.建立第一个win32

第一步

第二步

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

则运行会报如下错误: 改正方法: 属性=》连接器=》系统=》子系统=》窗口 再次运行就ok了

第三步

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

#include

int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hpreHinstance, LPSTR lpCmdLine, int nCmdShow)

{

//消息提示框

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

return 0;

}

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

3.参数解读

#include

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字符集

第三个参数:标题

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