Windows编程C++之句柄

来源:互联网 发布:网游之演技一流张知 编辑:程序博客网 时间:2024/06/01 09:18

什么是窗口?

窗口是windows编程的核心,那什么是窗口?此时浮现在你脑中窗口的应该是这个样子的

这里写图片描述

 这种类型的窗口叫做应用窗口或者主窗口,窗口内部的区域叫做client area,是由用户自己的程序管理的,窗口外的区域是由OS管理的。下图是另外一种类型的窗口。

这里写图片描述

是的,不要怀疑,这确实也是一种窗口!在Windows编程中,UI的控件,例如Button或者edit box,它们自身就是窗口。UI控件和应用程序窗口最大的不同就是控件自己是不能存在的。也就是说,控件必须放在窗口当中。当你拖拽一个窗口的时候,控件会随着窗口移动。除此之外,控件和应用程序窗口可以communicate。因此,当你想到窗口的时候,不要仅仅想到应用程序窗口;一个窗口应该包含以下特点•占据屏幕特定的区域•有时可能不可见•自己知道如何重绘•响应用户或者操作系统的事件

父窗口和Owner窗口

控件窗口是应用程序窗口的child,应用程序窗口是控件窗口的Parent。应用程序窗口为子窗口提供用于定位耳朵坐标系。并且,父窗口会在外观上影响子窗口;例如,没有子窗口能够出现在父窗口的边界之外,如果越界,则被剪裁。当应用程序显示一个对话框的时候,应用程序窗口就是owner窗口,对话框就是owned窗口。当owner最小化的时候,owned会被隐藏;也会随着owner的destory而消失。

窗口句柄

窗口是对象,但窗口不是类。程序通过句柄来管理窗口,句柄不太好理解,OS通过句柄去识别对象。你可以把windows想象成拥有很多窗口的表格,他通过句柄在这张表中寻找对应的窗口。窗口句柄的数据类型是HWND,创建窗口函数CreateWindow和CreateWindowEx的返回值就是窗口句柄。当你想在窗口中执行某种操作,你将会调用把句柄作为参数的函数。例如,在屏幕上重新定位窗口,要调用MoveWindow函数。
BOOL MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint);
第一个参数就是窗口句柄,后面的参数是窗口的大小位置以及是否要重绘窗口。!记住,句柄不是指针,没有*hwnd的用法
0 0
原创粉丝点击