Windows第一个窗口程序

桌面上显示一个窗口的具体步骤:

(1) 注册窗口类 (RegisterClassEX)

(2) 创建窗口       (CreatWindowEX)

(3)在桌面上显示窗口 (Show Window)

(4)更新窗口客户区 (Update Window)

(5)循环接受【消息】(Messgae)


1.注册窗口类

注册窗口类函数 : RegisterClassEX (窗口类地址)

窗口类 : WNDCLASSEX  。 一个窗口包含了一个窗口的主要属性

typedef struct_WNDCLASSEX {
      UINT cbSize;          //窗口类结构大小
      UINT style;            //派生窗口的风格
      WNDOROC lpfnWndProc;   //窗口消息处理指针
      int cbClsExtra;        //
      int cbWndExtra;
      HANDLE hInstance;      //本实例的句柄
      HICON hIcon;           //窗口左上角图标句柄
      HCURSOR hCursor;       //光标句柄
      HBRUSH hbrBackground;  //背景画刷的句柄
      LPCTSTR lpszMenuName;  //菜单名
      LPCTSTR lpszClassNamel //窗口类名称
      HICON hIconSm;         // 小图标句柄
}WNDCLASSEX;

定义一个窗口类: WNDCLASSEX wndclass;

(1)指定窗口类风格:

wndclass.style = CS_HREDRAW|CS_VREDRAW    //CS代表 class style 的意思
//如果大小改变就重画

窗口类风格可选样式::https://www.cnblogs.com/ddx-deng/p/3755825.html

(2)指定窗口消息处理函数地址

wndclass.lpfnWndProc = MainWndProc;  //窗口函数指针

当窗口收到消息后指向这个函数通知应用程序。

函数原型:

 LRESULT CALLBACK MainWndProc(HWND,UINT,WPAMRM,LPAMRM);

(3) 把本程序的实例句柄传给 hInstance 成员

wndclass.hInstance = hInstance;

(4)设置图标和光标

wndclass.hIcon =::LoadIcon(NULL,IDI_APPLICATION);

wndclass.hCursor =::LoadCursor(NULL,IDC_ARROW);
//使用预定义的图标和光标

(5)制定窗口重画客户区时使用的画刷

wndclass.hbrBackgrond = (HBRUSH)::GetStockObject(WHITE_BRUSH);

(6)制定窗口类的名称

wndclass.lpszClassName =  szClassName;

//    char szClassName[] = "MainWClass";

2.创建窗口

要创建窗口,使用注册好的窗口类调用CreatWindowEX函数即可。
 

HWND hwnd = ::CreateWindowEX(
        0,                           //扩展样式
        szClassname,
        "My frist Window !",        //标题
        WS_OVERLAPPEDWINODW,        //窗口风格
        CW_USEDEFAULT,              //初始X坐标
        CW_USEDEFAULT,              //初始Y坐标
        CW_USEDEFAULT,              //宽
        CW_USEDEFAULT,              //高
        NULL,                       //父窗口句柄
        NULL,                       //菜单句柄
        hInstance,                  //
        NULL);                       //用户数据

第四个参数制定窗口细节,第88页有常见风格定义。


3.显示窗口

    在桌面显示窗口:

ShowWindow(hwnd,nCmdShow);

其中nCmdShow是系统传递给WinMain函数的参数,可以有很多个取值


4.更新窗口

UpdateWindow(hwnd);

负责向窗口发送一个WM_PAINT的消息,来更新客户区。窗口处理函数收到WM_PAINT消息后会重画客户区


5.无限消息循环

发布了2 篇原创文章 · 获赞 0 · 访问量 201

猜你喜欢

转载自blog.csdn.net/the_youngs_dream/article/details/95043079
今日推荐