Windows窗口创建

来源:互联网 发布:武夷山网络花店 编辑:程序博客网 时间:2024/06/07 14:06

Windows窗口创建流程:

1、创建入口函数WinMain()

2、注册窗口类

3、实现回调函数功能

4、显示窗口

5、更新窗口

6、消息循环

 

回调函数为WinProc,具体定义如下:

LRESULT CALLBACK WinProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam )

函数解析为:

1、每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:

窗口句柄(Window Handle) HWND,

消息ID(Message ID) UINT,

和两个消息参数(wParam, lParam)WPARAM、LPARAM,

WndProc的第一个参数hWnd就是当前接收消息的窗口句柄,第二个参数就是被传送过来的消息,第三、第四个参数都是附加在消息上的数据,这和MSG结构体是一样的。

2、LRESULT结构体为:

LRESULT CALLBACK WinProc( //WinProc名称可自由定义

    HWND hwnd,

    UINT uMsg,

    WPARAM wParam,

    LPARAM lParam

)

LRESULT为窗口程序(WinProc)指针。

//创建入口函数int WINAPI WinMain( HINSTANCE hInstance,  //应用程序当前实例的句柄。 HINSTANCE hPrevInstance,//应用程序的先前实例的句柄。对于同一个程序打开两次,出现两个窗口第一次打开的窗口就是先前实例的窗口。对于一个32位程序,该参数总为NULL。 LPSTR lpCmdLine,//指向应用程序命令行的字符串的指针,不包括执行文件名。 int ShowCmd//指明窗口如何显示,具有不同参数 ){HWND hWnd=0;MSG nMsg={0};/*MSG:消息结构体typedef struct tagMSG {  HWND hwnd;//消息所属的窗口  UINT message;//消息的标识符, 为WM_XXX宏  WPARAM wParam;//wParam和lParam,用于指定消息的附加信息  LPARAM lParam;  DWORD time;//消息投递到消息队列中的时间  POINT pt;//鼠标的当前位置 } MSG;*///注册窗口类WNDCLASS cs={0};/*WNDCLASS:窗口信息结构体typedef struct _WNDCLASS {UINT style;// 窗口类型WNDPROC lpfnWndProc;//窗口处理函数int cbClsExtra;//窗口扩展int cbWndExtra;//窗口实例扩展HINSTANCE hInstance;//实例句柄HICON hIcon;//窗口的最小化图标HCURSOR hCursor;//窗口鼠标光标HBRUSH hbrBackground;//窗口背景色LPCTSTR lpszMenuName;//窗口菜单LPCTSTR lpszClassName;// 窗口类名} WNDCLASS, *LPWNDCLASS;*/cs.cbClsExtra=0;cs.cbWndExtra=0;cs.hbrBackground=(HBRUSH)(COLOR_WINDOW+2);cs.hCursor=NULL;cs.hIcon=NULL;cs.hInstance=hInstance;cs.lpfnWndProc=(WNDPROC)WinProc;cs.lpszClassName="Main";cs.lpszMenuName=NULL;cs.style=CS_VREDRAW|CS_HREDRAW;RegisterClass(&cs);//实现注册窗口//创建窗口hWnd=CreateWindow("Main","Windows",WS_OVERLAPPEDWINDOW,200,200,500,500,NULL,NULL,hInstance,NULL);/*  CreateWindow函数参数解析:HWND WINAPI CreateWindow(_In_opt_  LPCTSTR lpClassName,      // 窗口类名称_In_opt_  LPCTSTR lpWindowName,  // 窗口标题_In_      DWORD dwStyle,                // 窗口风格,或称窗口格式_In_      int x,                                 // 初始 x 坐标_In_      int y,                                 // 初始 y 坐标_In_      int nWidth,                        // 初始 x 方向尺寸_In_      int nHeight,                       // 初始 y 方向尺寸_In_opt_  HWND hWndParent,        // 父窗口句柄_In_opt_  HMENU hMenu,               // 窗口菜单句柄_In_opt_  HINSTANCE hInstance,    // 程序实例句柄_In_opt_  LPVOID lpParam              // 创建参数);*///显示窗口ShowWindow(hWnd,SW_SHOW);//更新窗口UpdateWindow(hWnd);//消息循环while(GetMessage(&nMsg,0,NULL,NULL)){TranslateMessage(&nMsg);DispatchMessage(&nMsg);}return 0;}


0 0
原创粉丝点击