windows程序设计:3-窗口和消息

1.

注册窗口类

创建窗口

在屏幕上显示窗口

从消息队列中循环读取消息

Main中只需要进行上面的工作,程序的其他操作在WndProc中。

读到消息后,windows 调用窗口过程 WndProc,在WndProc中根据message分析是什么消息,进行相应的操作。当用户关闭窗口时,读取消息返回0,结束从消息队列中循环读消息。

窗口过程:

窗口过程是一个函数,windows通过调用它给窗口发消息。

2.窗口句柄:

系统通过窗口句柄来在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。

而每个窗口都会有自己的窗口过程,所以用户的输入就会被正确的处理。例如有两个窗口共用一个窗口过程代码,你在窗口一上按下鼠标时消息就会通过窗口一的句柄被发送到窗口一而不是窗口二。

3.消息机制:

系统将会维护一个或多个消息队列,所有产生的消息都会被放入或是插入队列中。

系统会在队列中取出每一条消息,根据消息的接收句柄而将该消息发送给拥有该窗口的程序的消息循环。

每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统所以Windows可以同时进行多个任务。

4.句柄:

句柄是一个数(通常为32位),他代表一个对象。程序几乎总是通过调用windows函数获取句柄。程序在其他windows函数中使用这个句柄,以引用它代表的对象。

详细的可分为许多种,都是以H开头的。在VB中使用时全部都用Long。  

常见的有窗口句柄(HWND),设备描述表句柄(HDC),内存句柄(HMEM),文件句柄,进程句柄,线程句柄,笔的类型句柄(HPEN),字体句柄(HFONT),区域句柄(HRGN)等等。

5.一个窗口过程对应一个窗口还是一个窗口类???

一个窗口能处理基于同一个窗口类创建的多个窗口消息。参数hwnd让窗口过程知道是哪个窗口在接收消息。


1.UpdataWindow 调用,给窗口发送第一个WM_PAINT消息。通知窗口必须绘制客户区。

2.无效区域又叫更新区域,是需要重画的区域。正是客户区无效区域的存在,才提示了windows将一个WM_PAINT消息放在应用程序的消息队列中。InvalidateRect(hwnd,NULL,TRUE)使客户区内的矩形无效,TRUE表示擦除背景,FALSE表示原有的东西保留在原处.

3.hdc 是 “设备描述表句柄”; DC是设备描述表,是GDI内部保存的数据结构,与特定显示器有关。

4.获取设备描述表句柄方法一: case WM_PAINT:

                               hdc = BiginPaint(hwnd,&ps);仅使无效区域有效.

                               EndPaint(hwnd,&ps);

                               return 0 ;

                   方法二: hdc = GetDC(hwnd);整个客户区.不会使任何无效区域变为有效.

                           ReleaseDC(hwnd,hdc);

  ValidateRect(hwnd,NULL);可以使整个客户区有效。

GetWindowDC 返回写入整个窗口的设备描述表。

5.GetTextMetrice(hdc,&tm)返回设备描述表中当前选定的字体信息。

6.获得客户区的大小:

cxClient = LOWORD(lParam);

cyClient = HIWORD(lParam);

<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(31) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值