Windows程序设计14:Win32窗口程序的创建流程


前言

Windows程序设计14:Win32窗口程序的创建流程。


一、Win32窗口程序的创建流程

1.创建流程

第一步:注册窗口类,指定窗口类的名称与窗口回调函数。
第二步:创建窗口,指定注册窗口类、窗口标题、窗口的大小。
第三步:显示窗口。
第四步:开始消息循环。
第五步:窗口函数中处理窗口消息。

需要说明的是,这里新建一个Win32桌面应用程序的空项目,从头开始进行Win32窗口程序的创建流程。如果不新建空项目,则编译器生成的项目模板中会包含很多冗余的文件,有的我们用不到,而且编译器自动生成不利于我们理解原理。因此这里从空项目开始进行介绍。空项目中仅添加一个.cpp源文件即可。
在这里插入图片描述

2.API函数CreateWindow

要用到的API函数为CreateWindow.
用于创建一个重叠窗口、弹出窗口或子窗口,它指定窗口类、窗口标题、窗口样式、窗口的初始位置和大小等。该函数还指定窗口的父级或所有者以及窗口的菜单。函数原型如下

HWND CreateWindow(
  LPCTSTR   lpClassName,    // 窗口类名
  LPCTSTR   lpWindowName,   // 窗口标题
  DWORD     dwStyle,        // 窗口样式
  int       x,              // 窗口的初始 x 坐标
  int       y,              // 窗口的初始 y 坐标
  int       nWidth,         // 窗口的宽度
  int       nHeight,        // 窗口的高度
  HWND      hWndParent,     // 父窗口句柄
  HMENU     hMenu,          // 菜单句柄或控件 ID
  HINSTANCE hInstance,      // 应用程序实例句柄
  LPVOID    lpParam         // 附加数据
);

参数LPCTSTR lpClassName为窗口类名(必须是注册过的),指定窗口的类别。可以是预定义的类名(如 “BUTTON”、“EDIT”)或自定义的类名。

参数LPCTSTR lpWindowName为窗口的标题(显示在标题栏中)。对于控件,可以是控件的文本内容。

参数DWORD dwStyle为窗口样式,控制窗口的外观和行为。常用样式:WS_OVERLAPPEDWINDOW:标准窗口样式。WS_CHILD:子窗口样式。WS_VISIBLE:窗口创建后立即显示。。。等等

参数int x和y为窗口的初始位置(左上角坐标)。对于子窗口,坐标相对于父窗口的客户区。

参数int nWidth和nHeight为窗口的宽度和高度。

参数HWND hWndParent为父窗口句柄。如果为 NULL,表示没有父窗口(顶级窗口)。

参数HMENU hMenu为菜单句柄或控件 ID。对于顶级窗口,指定菜单句柄。对于子窗口,指定控件 ID。

参数HINSTANCE hInstance为应用程序实例句柄,通常从 WinMain 的参数中获取。

参数LPVOID lpParam为附加数据,通常为 NULL。

返回值:如果成功,返回创建的窗口句柄(HWND)。如果失败,返回 NULL。可以通过 GetLastError 获取错误码。

3. API函数RegisterClassEx

为后续在调用CreateWindow或CreateWindowEx中使用的窗口注册一个窗口类。函数原型为

ATOM RegisterClassEx(
  const WNDCLASSEX *lpwcx  // 指向 WNDCLASSEX 结构的指针
);

参数const WNDCLASSEX *lpwcx是一个指向 WNDCLASSEX 结构的指针,该结构定义如下:

typedef struct tagWNDCLASSEX {
   
   
  UINT      cbSize;         // 结构体大小(必须设置为 sizeof(WNDCLASSEX))
  UINT      style;          // 窗口类样式(如 CS_HREDRAW | CS_VREDRAW)
  WNDPROC   lpfnWndProc;    // 窗口过程函数指针
  int       cbClsExtra;     // 类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智能与优化

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

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

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

打赏作者

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

抵扣说明:

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

余额充值