win32 简单窗口的创建及参数介绍

本文介绍了使用Win32API进行窗口编程的基本步骤,包括注册窗口类、创建窗口、消息循环处理以及窗口过程等核心概念。

Win32 API应用
int WNDAPI(_stdcll) WinMain(                //程序入口函数,有操作系统调用。
HINSTANCE hInstance          实例句柄(exe或dll)
HINSTANCE hPrevIstance       兄弟实例句柄
LPSTR lpCmdLine              命令行参数
int nCmdShow                 显示的状态(最大化、最小化)

 

数据类型
UINT unsigned int
LPSTR  char* LP long pointer
LPCSTR 表示一个指向不会也不能被修改的常量字符串指针
NULL 指向0的指针并非整数0


一、注册窗口类

WNDCLASSEX 结构体及各成员的意义
{
    UINT    cbSize;      结构体的大小
    UINT    style;       类的式样(CS_*),不要跟窗口式样(WS_*)混淆了。这个一般设为0
    WNDPROC lpfnWndProc; 指向这个窗口类的窗口过程的指针(回调函数,用来说明产生各种消息所应产生的结果,有操作系统调用)
    int     cbClsExtra;  配置给这个类的额外内存,一般为0.
    int     cbWndExtra; 配置给这个类的每个窗口的额外内存,一般为0
    HANDLE  hInstance; 应用程序实例的句柄(从WinMain()第一个参数传递来)
    HICON   hIcon;  当用户按下Alt+Tab组合时候显示的大图标(一般为32*32)
    HCURSOR hCursor; 在我们窗口上显示的光标。
    HBRUSH  hbrBackground; 设置我们窗口背景颜色的背景刷子
    LPCTSTR lpszMenuName;  这个类的窗口所用的菜单资源的名字
    LPCTSTR lpszClassName; 类的名字
    HICON   hIconSm; 在任务栏和窗口的左上角显示的小图标(一般为16*16)
} WNDCLASSEX;
RegisterClassEx()注册窗口

二、创建窗口

HWND CreateWindowEx(
  DWORD dwExStyle,      // 扩展的窗口式样
  LPCTSTR lpClassName,  // 类的名字
  LPCTSTR lpWindowName, // windows窗口名
  DWORD dwStyle,        // 窗口式样参数
  int x,                // 左上角x坐标
  int y,                // 左上角y坐标
  int nWidth,           // window width
  int nHeight,          // window height
  HWND hWndParent,      // 父窗口的句柄
  HMENU hMenu,          // 菜单句柄
  HINSTANCE hInstance,  //应用程序实例句柄
  LPVOID lpParam        // 窗口穿件实例的指针
);
ShowWindow(hwnd,ncmdShow)显示窗口
UpdateWindow(hwnd)重画窗口

三,消息循环

 while(BOOL GetMessage(
  LPMSG lpMsg,         // address of structure with message
  HWND hWnd,           // handle of window
  UINT wMsgFilterMin,  // first message
  UINT wMsgFilterMax   // last message
)
{
  TranslateMessage(&msg); 将WM_KEYDOWN,WM_KEYUP消息转换为WM_CHAR消息
  DispatchMessage(&msg);  将消息送到消息应该被送到的窗口,有操作系统调用。
}

四,窗口过程(回调函数)

LRESULT CALLBACK WndProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);
DestoryWindow()销毁窗口,发送WM_DESTORY消息,系统移除我们的窗口之前删除它剩下的所有的子窗口
PostQuitMessage()发送WM_QUIT 消息终止程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值