PTo*_*Pro 1 c++ assembly user-interface operating-system window
我是 C++ 新手,我想知道以供将来参考:
是否可以在没有任何库(例如 Win32 API、GTK、QT 等)的情况下打开(跨平台兼容)窗口?
如果没有,有人可以解释为什么吗?
操作系统如何启动 GUI?即使它用汇编来实现,C++ 也可以做汇编可以做的事情(据我所知,如果我错了,请告诉我)。
我找到了一篇关于同一主题的帖子,但所有答案都说你无法避免 API,但他们没有提到为什么?
C++ 如何在没有 Win32 API 的情况下制作一个简单的窗口?
问题
是否可以在没有 API 调用或任何外部库的情况下创建 GUI?
如果没有,为什么以及操作系统如何启动 GUI?
C++ 能做汇编能做的一切吗?(我不太关心这个,因为我想我可以在谷歌上找到答案,如果有人回答的话我很感激)。
- 是否可以在没有 API 调用或任何外部库的情况下创建 GUI?
没有1。
1:除非,例如,您正在编写自己的显示驱动程序并且可以直接访问视频硬件。
- 如果没有,为什么
每个操作系统处理 UI 编程的方式都不同。您必须使用程序运行所在的每个操作系统(即 Windows 上的 Win32 等)提供的 UI API。C++ 中没有内置通用 UI 框架,因此如果您想编写跨平台 UI,则必须使用第三方库(即 Qt、GTK 等),或者编写您自己的、包装每个操作系统的库- 特定的 API 转换为通用接口供您的代码使用。
操作系统如何启动 GUI?
事实并非如此。它只是执行你的程序,仅此而已。然后程序决定在运行时做什么。如果程序想要显示 GUI,则必须根据需要调用操作系统提供的 UI API。
- C++ 能做汇编能做的一切吗?
或多或少,是的2。C++ 是一种编译语言,它生成直接在 CPU 上运行的机器代码,与 Assembly 相同。此外,许多 C++ 编译器实际上支持将实际汇编指令直接嵌入到 C++ 代码中的功能。C++ 不使用必须在运行时转换为机器代码的中间字节码,就像脚本/解释语言所使用的那样。
2:并非所有CPU指令都可以直接执行,如果您的程序尝试执行操作系统不希望您访问的指令(例如直接硬件访问的指令),操作系统将进行干预。