Windows桌面应用开发 您所在的位置:网站首页 windows窗口包含什么栏 Windows桌面应用开发

Windows桌面应用开发

2024-07-04 01:41| 来源: 网络整理| 查看: 265

MSDN在线原文(英文)

什么是窗口?

很明显,在给操作系统命名为Windows之后,窗口是Windows非常重要的核心。但什么是窗口?当你想到一个窗口,你可能会想到这样一个事情:

应用程序窗口的屏幕快照

 

这种类型的窗口被称为应用程序窗口或主窗口,它通常是一个带有标题栏,最小化和最大化按钮和其它标准UI元素的框架。这个框架被称为窗口的非客户区,这么说是因为窗口的这部分是由操作系统负责管理的。在框架之内的区域是客户区,该区域由用户的程序负责管理。

这是另一种类型的窗口:

一个控件窗口的屏幕快照

如果你是Windows编程的新手,这种UI控件可能会令你大吃一惊,诸如按钮和编辑框,它们本身就是窗口。一个UI控件和应用程序窗口主要的区别是一个控件不是独立存在的。相反,控件是放置在相应的应用程序窗口。当你拖动应用程序窗口时,正如你所期望的,控件也随之移动;同时,控件和应用程序窗口可以互相通信(例如,应用程序窗口接收来自按钮的点击通知)。

因此,当你构思窗口,不要简单的构思一个应用程序窗口,反而要以一个设计规划那样构思一个窗口:

占据屏幕的一部分。在某个特定时刻,可能或不可能可见。知道如何绘制自己响应来自用户或操作系统的事件 父窗口和所有者窗口

对于一个UI

控件,控件窗口被视为应用程序窗口的子辈,应用程序窗口是控件窗口的父辈。父窗口提供了用户定位子窗口的坐标系统。一个窗口的外观受一个父窗口各方面影响;例如,子窗口进行裁剪,所以没有子窗口可以出现在其父窗口边界外。

另一种关系是一个应用程序窗口和一个模态对话框之间的关系,当一个应用程序显示一个模态对话框,应用程序是其所有者窗口,并且对话框是附属窗口。附属窗口总是出现在它的父窗口前面。当所有者最小化时它也跟着隐藏,并被所有者销毁。下图展示了一个应用程序显示有两个按钮的对话框:

 具有对话框的应用程序屏幕截图

应用程序拥有对话框窗口,而对话框窗口是两个按钮窗口的父窗口。下图显示了这些关系:

图片显示了Owner/Owned(所有者/附属者)和Parent/Child(父/子)关系

Window Handles(窗口句柄)

窗口是对象,它们有代码和数据,但它们不是C++类。一个程序通过使用称为句柄(handle)的值来引用窗口。句柄是一个不透明的类型,从本质上来讲,它仅仅是一个数字,操作系统用它来标识对象。你可以想象在Windows中为所有已创建的窗口建立一个大的表格,然后在这个表中由句柄来查找窗口(不论这是不是它的内部工作原理并不重要)。窗口句柄的数据类型是HWND,这通常念做“aitch-wind”。窗口句柄是由创建窗口的函数CreateWindow或CreateWindowEx返回的。

要在一个窗中执行操作,通常要调用一些有HWND参数值的函数。例如,在屏幕上重新定位(移动)窗口,调用MoveWindow这个函数:

BOOL MoveWindow(HWND hWnd, int x, int y, int nWidth, int nHeight, BOOL bRepaint);

第一个参数是要移动的窗口的句柄,其它参数指定窗口新的位置和窗口是否应重绘。

请记住句柄不是指针,如果hwnd是一个包含句柄的变量,试图解除引用的句柄写成*hwnd是一个错误。

屏幕和窗口坐标

坐标是以设备无关的像素点作为测量。有关与设备无关部分的设备无关像素更多内容,在图形编程详述。

根据任务,可以测量相对与屏幕的坐标,相对于窗口(包含框架),或相对于窗口的客户区。例如,将一个窗口定位在屏幕上使用屏幕坐标,但在一个窗口中使用的是客户区坐标。在各种情况下,原点(0,0)始终是该区域的左上角。

 

上图展示屏幕(Screen)/窗口(Window)/客户区(Client)坐标



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有