窗口的创建过程需要四个步骤,下面列出了创建步骤和这个过程中涉及的类和函数:
1.设计一个窗口类//很多特征(光标,图标,背景)WNDCLASS
2.注册窗口类//RegisterClass
3.创建窗口//首先定义句柄 如:HWND hwnd; CreateWindow
4.显示及更新窗口//显示窗口:ShowWindow,更新窗口:UpdateWindow
一、WNDCLASS类:
typedef struct _WNDCLASS {
UINT style; //
WNDPROC lpfnWndProc;
int cbClsExtra; //额外的内存空间,属于这种窗口类的所有窗口所共享,通常情况下设为0
int cbWndExtra; //额外的内存空间,窗口内存空间
HINSTANCE hInstance; //句柄
HICON hIcon; //句柄,图标
HCURSOR hCursor; //光标句柄
HBRUSH hbrBackground; //画刷句柄
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
} WNDCLASS, *PWNDCLASS;
第一个参数是指定类的类型,一般在Windows里面类有如下几种:(CS_BYTEALIGNCLIENT,CS_BYTEALIGNWINDOW,CS_CLASSDC,CS_DBLCLKS,CS_DROPSHADOW,CS_GLOBALCLASS,CS_HREDRAW,CS_NOCLOSE,CS_OWNDC,CS_PARENTDC,CS_SAVEBITS,CS_VRENRAW)它们都是只有一位为1的数值
第二个参数是回调函数,当应用程序收到给某一窗口的消息时,就应该调用某一函数来处理这条消息,这一调用过程不用应用程序自己来实施,而由操作系统完成,但是,回调函数本身的代码必须要应用程序自己完成。
第三和第四参数是系统额外分配的内存空间,其解释如上。
第五、六、七、八定义的是一个句柄,其结构类型如下:
HICON LoadIcon(
HINSTANCE hInstance, // handle to application instance
LPCTSTR lpIconName // name string or resource identifier
);//可以用Windows自带的标准图标,也可以CreateIcon,DestroyIcon
HCURSOR LoadCursor(
HINSTANCE hInstance, // handle to application instance
LPCTSTR lpCursorName // name or resource identifier
);//标准光标
在第九和第十个参数中,LPCTSTR:LONG POINTER CONST STRING.
二、创建窗口:
HWND CreateWindow(
LPCTSTR lpClassName, // registered class name
LPCTSTR lpWindowName, // window name
DWORD dwStyle, // window style
int x, // horizontal position of window
int y, // vertical position of window
int nWidth, // window width
int nHeight, // window height
HWND hWndParent, // handle to parent or owner window
HMENU hMenu, // menu handle or child identifier
HINSTANCE hInstance, // handle to application instance
LPVOID lpParam // window-creation data
);
三、显示窗口:
BOOL ShowWindow(
HWND hWnd, // handle to window
int nCmdShow // show state
);
四、更新窗口
BOOL UpdateWindow(
HWND hWnd // handle to window
);