【问题标题】:C++ Win32 API GetMessage From Awesomium In Separate Thread来自 Awesomium 的 C++ Win32 API GetMessage 在单独的线程中
【发布时间】:2014-03-09 05:53:05
【问题描述】:

您好,感谢您抽出宝贵时间查看我的问题。

我正在制作一个使用 Win32 API 创建初始程序窗口的 C++ 程序。然后我创建一个线程来创建一个子窗口,并将我的 Awesomium WebView 附加到这个子窗口。

我了解 Awesomium 不是线程安全的,但文档声明它是线程安全的,只要您在创建它的线程中使用它,它就允许您在备用线程中使用 Awesomium。

现在讨论这个问题。我在从该线程接收输入回 WinProc 时遇到问题。如果我尝试在此子窗口的父级 Awesomium 中单击鼠标,则我不能再在屏幕上拖动主窗口或使用最小化/最大化/关闭按钮,也不能实际单击 awesomium 窗口内的任何内容有任何效果. 我做了很多研究,发现 AttachThreadInput() 但这似乎没有帮助。

有谁知道我如何在 WinProc 中向/从该线程发送/接收消息?

当前代码在这里:http://pastebin.com/i4kNHcch

非常感谢您的宝贵时间。

【问题讨论】:

  • 请发布您的代码,如果我们看到您已经尝试过,我们可以提供更具体的建议或者指出您哪里出错了。
  • 也许是我,但是“只要您在创建它的线程中使用它,就允许您在备用线程中使用 Awesomium”......什么?
  • Awesomium 不是线程安全的,您不能在不同的线程中使用不同的部分,但是您可以在备用线程中使用它,只要它在该线程中完全使用即可。我现在正在上传到 pastebin。
  • 为什么要在单独的线程中查看 Web 视图?有没有在专用线程中运行的 windows 消息循环?

标签: c++ multithreading winapi message-queue awesomium


【解决方案1】:

您的问题可能与 Awesomium 不是线程安全的无关。如果一个线程中有一个主窗口,另一个线程中有一个子窗口,Windows 可能会死锁。父窗口和子窗口需要相互通信(在操作系统内部),并且它们并非旨在进行线程外通信。

【讨论】:

  • 我尝试在主线程中创建子窗口,但没有明显效果。
  • 你是对的,我必须在我的 3D 引擎中而不是在它之上进行 Awesomium 渲染,我使用 irrlicht.sourceforge.net
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
  • 2017-07-23
  • 1970-01-01
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多