Windows应用程序开发1

时间:2021-08-10 05:54:42

一、消息(MSG)

操作系统将传递的信息包装成MSG类给应用程序

typedef struct tagMSG {
        HWND hwnd;        // 窗口句柄,类似指针,系统通过句柄调用资源
        UINT message;     // 消息的编号(比如点击鼠标)
        WPARAM wParam;    // unsigned int类型,关于消息的附加信息,比如按下按键,ascii码就是附加消息
        LPARAM lParam;    // 同上
        DWORD time;       // 发出消息时刻,DWORD 32位整数
        POINT pt;         // 发出消息时鼠标的位置
} MSG;

其中对于message,微软对这些行为定义了一系列的宏(WM_开头,Windows Macro,比如WM_LBUTTONDOWN)

二、WinMain

int WINAPI WinMain(
  HINSTANCE hInstance,      // handle to current instance,系统给的实例号
  HINSTANCE hPrevInstance,  // handle to previous instance,现在这个参数为NULL
  LPSTR lpCmdLine,          // Long Pointer String, 接收命令行参数
  int nCmdShow              // 窗口显示形式
);
其中有两个实例句柄。实例就是一个运行中的程序,对这个实例需要一个标示。

三、窗口创建

1、设计一个窗口类、包括图标,背景,光标类型

2、注册窗口类

3、创建窗口

4、显示或更新窗口

typedef struct _WNDCLASS { 
    UINT       style;           // 窗口类的类型 CS_开头 Class Style,CS_HREDRAW | CS_VREDRAW 水平重画,垂直重画
    WNDPROC    lpfnWndProc;     // 窗口的回调函数
    int        cbClsExtra;      // 窗口类的附加内存,由属于这个窗口类的所有窗口共享,一般为0
    int        cbWndExtra;      // 一般为0
    HINSTANCE  hInstance;       // 当前应用程序实例号
    HICON      hIcon;           // 加载标准图标时为NULL,用LoadIcon() CreateIcon()函数
    HCURSOR    hCursor;         // 
    HBRUSH     hbrBackground; 
    LPCTSTR    lpszMenuName; 
    LPCTSTR    lpszClassName; 
} WNDCLASS, *PWNDCLASS