【问题标题】:MFC - Getting device context of a specific windowMFC - 获取特定窗口的设备上下文
【发布时间】:2015-08-05 07:15:01
【问题描述】:

我是 MFC 的新手,并试图了解 MFC 的设备上下文和 UI 线程。

我创建了一个打开窗口的 UI 线程。 (我创建了一个对话框类,并在线程的 InitInstance 中调用了 doModal()。

现在我正在从这个 UI 线程创建另一个 WORKER 线程。

我想从工作线程访问由 UI 线程打开的窗口。

请建议我如何做到这一点。我在网上搜索了很多,我没有得到正确的答案。

【问题讨论】:

    标签: c++ multithreading visual-c++ mfc


    【解决方案1】:

    您不能在工作线程中处理 UI 对象。在这种情况下,最好的办法是在工作线程中做任何你需要的事情,一旦结果可用,通知 UI 线程。这可以通过带有成本 WM_ 的 CWnd.PostMessage 来完成...

    UI 线程必须处理此消息并执行所需的 UI 处理。

    【讨论】:

    • 但我想从工作线程的 UI 线程的对话窗口上画一些波浪。我永远不能这样做吗?
    • 根据msdn.microsoft.com/en-us/library/windows/desktop/…,您可以同步对图形资源的访问,但问题是对您控制的 GDI 函数的访问有很多。所以你最好将波浪坐标传递给 UI 线程并从那里进行绘图。
    • 好吧..我明白这一点。谢谢你帮助我。但我还有一个澄清。多个 UI 线程无法打开同一个窗口对话框。正确吗?
    • 是的,正确的。通常所有的 GUI 都由一个线程处理(即使您有多个窗口),而您可以有多个工作线程。
    • 好的。知道了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 2011-03-23
    • 1970-01-01
    • 2018-01-01
    • 2017-03-23
    • 1970-01-01
    • 2011-04-02
    相关资源
    最近更新 更多