Windows的编译Qt是低级别的win api

时间:2014-03-24 05:41:48

标签: c++ qt api winapi

Qt是跨平台的c ++ Gui Library.Code一次并为不同的平台编译。举个例子,我编写了一个Project(带有很少工具栏的体面文本编辑器)或任何Windows(x86)程序。

声明1:Program.exe入口点为WinMain。

声明2:文本编辑器和工具栏将使用" CreateWindow" win32 api。 Qt有自己的类来实现,但要求OS(Windows)创建工具栏或文本编辑器,程序exe接口与OS(Windows)。操作系统了解它知道它对Qt类一无所知,所以要创建工具栏或文本编辑器程序必须使用win32 api。

声明3:所有事件处理(按钮单击,鼠标单击)将使用Windows messeging系统进行处理。

注意:根据我的理解,似乎我正在使用win32 api glass查看所有内容。

1 个答案:

答案 0 :(得分:6)

  1. 正确。 WinMain实现由Qt库提供。

  2. 半正确。顶级窗口使用CreateWindow创建。子窗口小部件,例如非顶层工具栏是Qt自己的窗口小部件,在应用程序之外是不透明的。它们仅通过辅助功能API公开。这允许您创建比Windows能够处理的更多小部件。如果不是特别快,一百万个儿童小部件是可行的。

  3. 正确 - 别无他法。当然,Qt会立即将本机消息转换为QEvent实例,并在内部将它们分派到各种QObject实例。在Qt-land中,所有事件必须由QObject实例接收。

  4. 你的断言中你认为winapi与内核有任何关系是错误的。 Winapi由一堆用户空间DLL实现。您可以自己实现这些DLL。这些DLL本身使用本机api调用内核。这是内核实际暴露给用户空间的API。