c++ - C++ 打开一个没有库的窗口
问题描述
我是 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,那么它必须根据需要调用 OS 提供的 UI API。
- C++ 能做汇编能做的所有事情吗?
或多或少,是的2。C++ 是一种编译语言,它可以生成直接在 CPU 上运行的机器代码,就像 Assembly 一样。此外,许多 C++ 编译器实际上支持在 C++ 代码中直接嵌入实际汇编指令的能力。C++ 不使用必须在运行时翻译成机器代码的中间字节码,就像脚本/解释语言使用的那样。
2:并非所有CPU指令都可以直接执行,如果您的程序试图执行操作系统不希望您访问的指令(例如,直接访问硬件的指令),操作系统会进行干预。
推荐阅读
- visual-studio-code - ( Ctrl + / ) 快捷方式在 VSC 中无法正常工作
- sql-server - Calculating age based on a column that has only years in it in SQL Server
- python - 如何将两个对象合并成一个包含两个元素的元组?
- azure - 为 Azure Blockchain Workbench 部署智能合约时出错
- php - PHP 填补数组空洞
- javascript - 如何使用反应导航?
- javascript - 如何使用 CSS 创建可悬停的彩虹?
- c++ - 为什么只有指向函数的指针而不是函数的var?
- android - 未调用Android活动startActivityForResult
- c++ - 如何让while循环与数字生成器一起使用?