您的位置:首页 > 编程语言

windows 编程随笔——窗口和信息

2010-01-18 16:29 253 查看
1,在简单的hellowin(一个具有最小化,最大化,关闭的窗体结构)程序中简述的一个简单的win窗口程序的机制,简略概述:

a,结构,具有如下4个:

MSG 信息结构

WNDCLASS 窗口类结构

PAINTSTRUCT 绘图结构

RECT 矩形结构

b,句柄名具有如下3个:

HINSTANCE 实例(程序自身)句柄

HWND 窗口句柄

HDC 设备描述表句柄

c,在一个窗口程序中,我们第一步就是要注册窗口类,在实际注册前需做点准备工作:也就是有几个结构,有几个句柄需要使用。

在单单绘制一个窗口时我们需要结构(MSG、WNDCLASS);句柄(HWND)

接着就是需要初始化结构和句柄,但是结构是在注册窗口前需要初始化的(WNDCLASS),句柄在注册窗口之后初始化,信息(MSG)的初始化在句柄之后。

c1, WNDCLASS结构的初始化: 顾名思义是为一个结构体初始化参数。有10个域。

10个域分别代表:style样式【预处理定义了8进制的辨识码】、inpfWndProc窗口类窗口过程设置【也就是在窗口发生了动作后找谁处理,就找这个属性值的函数去处理】、cbClsExtra,cbWndExtra窗口结构中的预留空间【类似边框向内缩多少像素的意思】、hInstance句柄【也就是程序自身】、hIcon图标、hCursor鼠标句柄【通过函数赋值使鼠标进入窗口区域后变成箭头】、hbrBackground背景色【背景刷子】、IpszMenuName窗口菜单、IpseClassName类名。

c2,接下来注册窗口类:

RegisterClass函数接收一个WNDCLASS的引用。成功后进行窗口创建

d, 接着创建窗口,也就是对HWND句柄的初始化:

CreateWindow()函数有11个参数。分别为szAppName注册的窗口类名、TEXT标题栏显示【text用于文本显示】、style、x【窗口位置】、y【窗口位置】、x size【窗口大小】、y size【窗口大小】、父窗口句柄、菜单栏句柄、实例【自身】句柄、创建参数。

e,显示窗口:

ShowWindow(hwnd句柄,iCmdShow)第一个参数是创建窗口的句柄,第二个是窗口显示的方式,是最大化,最小化,还是普通。 如果你定了普通显示 那么窗口会被WNDCLASS初始化的背景刷子覆盖,所以需要UpdateWindow(hwnd句柄)把窗口移上来一层。

f,信息循环:也就是说,对在窗口区域内的所有操作程序是通过信息循环来完成的。

这个时候我们的MSG结构来了。通过GetMessage(&msg,null,0,0)函数,通过TrasnlateMessage(&msg)传送消息到队列。通过DispatchMessage(&msg)取出一个消息处理。那么处理完一个信息后怎么在回到开始出,调用和接收新一个信息呢,这个时候就有一个叫窗口过程的东西,通过一个callback函数实现回调过程。如果要中断消息的话只要让消息返回0就ok,怎么做呢?关闭窗口就会触发消息返回0.当然也是通过MSG的消息循环做到的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: