三、注册窗口类
设计宏窗口类后(WNDCLASS),我们还需要用 RegisterClass函数
对其进行注册,注册成功后,才可创建该类型窗口 原型如下:
ATOM RisterClass(Const WNDCLASS *LPWNDCLass);
函数只有 - 参数,即上步骤中所设计窗口类对象指针。
四、创建窗口 -- CreateWindow 函数
HWND CreateWindow( LPCTSTR lpClassName, // 窗口类的名称 说明1 LPCTSTR lpWindowName // 窗口的名字 - 窗口样式又标题栏,指定窗口名是在标题栏 DWORD dwstyle, // 指定窗口类样式,具体参考WS_OVERLAPPEDWINDOW类型 int x, // 窗口左上角x.y坐标 -- 宽、高。 -- x,设为CW_USEDEFAULT,窗口默认左上角坐标忽略y参数。 int y, int nWidth, int nHeight, // - 设为 CW_USEDEFAULT 窗口默认宽、高,nHight忽略。 HWND hwndparent, // 创建窗口的父窗口句柄 HMENU hmenu. // 指定窗口菜单句柄 HANDLE hInstance, // 指定窗口所属应用程序实例句柄 LPVOID lparam // WM_CREATE消息附加参数lparam传入数据指针 // 创建多文档界面窗口,lparam指向CLIENTCREATESRUCT结构体多数窗口设为NULL // 说明1、调用CreateWindows函数前,没有用RegisterClass函数,注册名称的窗口类。 #define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED // 产生层叠窗口有标题栏和边框 WS_CAPTION |\ 创建一个有标题窗口 WS_SYSMENU |\ 创建在标题栏上有系统菜单和WS_CAPTION类型一起作用 WS_THICKFRAME |\ 创建一个具有可调边框窗口 WS_MINIMIZEBOX |\ 最小化窗口,设定WS_SYSMENU类型 WS_MAXIMIZEBOX |\ 最大化窗口,设定WS_SYSMENU类型 ) |
窗口创建成功,CreaeWindow 函数返回系统为窗口分配句柄,否则返回NULL
五、显示及更新窗口 -- ShowWindow 函数
原型
Bool ShowWindow(
HWND hwnd, // 创建窗口后返回哪个窗口句柄。
int nCmdshow // 用来指定窗口显示状态。
);
nCmdShow 参数一般为:
SW_HIDE -- 隐藏并激活其他窗口 SW_SHOW --窗口原位置 以原来尺寸激活和显示窗口
SW_SHOWMAXIMIZED -- 激活窗口并将其最大化显示
SW_SHOWMINIMIZED -- 激活窗口并将其最小化显示
SW_SHOWNORMAL -- 激活并显示窗口 -- 窗口最小化或最大化状态 系统其恢复原来尺寸和大小。
更新窗口 -- updateWindow来刷新窗口
原型:
Bool updateWindow(
HWHD hwndl;// 指创建成功后的窗口句柄
) updateWindow 函数通过发送一个WM_PAINT 消息来刷新窗口
updateWindow 将WM_PAINT消息直接发送给窗口过程函数进行处理,而没放到我们前面所说的消息队列中。