c++ - 您如何编码将不同的可执行文件合并到一个窗口框架中?像浏览器一样?
问题描述
好的,这里有一个菜鸟问题:例如,您如何编写浏览器具有的此功能?例如,您打开一个 chrome 浏览器,您可以打开多个选项卡。然后,您可以将一个选项卡移出窗口,它变成另一个窗口,有自己的独立进程。然后你可以将该选项卡拖到另一个窗口中,它们变成一个框架?类似于 Windows 应用程序中的停靠,但是如何使用可执行文件来做呢?
解决方案
特定于 Windows 的答案,尽管我认为其他操作系统的工作方式几乎相同:HWND
您为窗口获得的句柄是全局的。如果您将其数值发送到不同的进程,该进程可以使用它来处理窗口:获取其信息、调整其大小,甚至在其上绘图。它不能做的是替换它的事件处理函数。
要像现在的浏览器那样实现进程分离,关键是创建一个容器窗口并将句柄发送给子进程。然后,孩子创建自己的窗口作为容器的孩子。子窗口只是填满了容器的整个内容区域。
这样,内容进程包含在父窗口中,但可以处理事件。
现在,如果您想将一个选项卡拖出到它自己的顶级窗口中,父进程会创建一个包含所有 UI 的新顶级窗口,然后将内容容器重新设置为这个新的顶级窗口。内容子跟随。
推荐阅读
- python-3.x - 在python tkinter中恢复画布上已删除的图片
- c - 如何为C中的字符串分配动态内存区域
- powershell - 如何将 RTF 文档转换为 docx
- linux - 即使在 `sort` 之后,`uniq` 仍然重复一些值
- c# - Passing parameters from textboxes to sql statement string - single quotes (') killing me
- php - 将数据插入数据库laravel
- google-cloud-platform - 如何将 Airflow 与 IA 平台连接?
- python - 如何通过添加自定义部分和符号来编辑 ELF
- sql-server - 查询 XML 列 - 根据同一行中的其他值获取值
- php - MySQL 中的 DATE 和 TIME(添加小时到日期并选择当前日期和时间)