2010-10-04 28 views
0

通过经验,我发现原生的窗体/组件不喜欢被改变。我知道使用Delphi或Visual Studio给你的本地窗口组件来填充窗体或窗口,然后你附加这些组件可能做的事件的代码(onClick举例)。Windows非本地用户界面如何工作?

但是,所有这些程序如Word或谷歌Chrome浏览器如何改变标准窗口的窗口?我以为它受到某种保护?

Chrome似乎实际上在窗口的框架上有选项卡?

我知道你也可以得到像Swing和QT这样的工具包,它们有自己的控件/组件来填充表单。这些工作如何? (操作系统/计算机如何知道非本地按钮应该如何操作?例如,Chrome的后退和前进按钮,它们不是本地组件?)。

我可以理解OpenGL/DirectX窗口是如何工作的,因为您正在告诉计算机到底要用多边形/四边形绘制什么。

我希望这个问题很清楚!

回答

0

Swing ant QT使用基本原语在低级别绘制自己的小部件,但它们也具有可以模仿本机控件的主题引擎。

0

Qt转移到本地控件。至于如何摆动它,它从操作系统获得一个基本的窗口。然后,就像Opengl \ Directx一样,它可以在该窗口中完成所有的绘图。至于在哪里定位布局经理所做的事情。每个经理都有一个布局样式,水平,垂直,网格,要绘制的组件以及需要填充的部分窗口。从那里开始,它将一些非常简单的数学运算分配给它的控件。

0

没有什么神奇的东西:非本机控件简单地绘制在空白窗口中。或者,代替被吸入它们可以被表示为基于状态几个位图中的一个(即:一个按钮可以被表示为用于正常状态的.PNG,另一个为.PNG按压状态等)

1

某些Windows控件具有“所有者绘制”模式。如果使用这种方法,则可以绘制控件(或至少控件的重要部分),而Windows则以标准方式处理用户输入。

+1

+1。有时也称为用户绘制,这里是用户绘制控件的文档:http://msdn.microsoft.com/en-us/library/b818z6z6.aspx – David 2010-10-04 15:42:13