【问题标题】:Adding a user interface to an image viewer plugin将用户界面添加到图像查看器插件
【发布时间】:2012-07-24 01:05:40
【问题描述】:

我有一个关于如何使用 Firebreath 开发图像查看器插件的一般性问题。为此,我想合并一个 GUI 框架,如 wxwidget 或 Qt。 GUI 可用于启动一些对话框,在顶部添加工具栏,或通过右键单击图像打开上下文菜单。

据我所知,我有一个 hwnd 句柄,所以我可以在窗口上绘图。我也了解我可以对各种事件做出反应,例如鼠标按钮单击或键盘敲击。但它让我无法添加图形菜单、按钮等。我知道我可以在窗口周围使用 html,但这不是我喜欢采用的路线。

例如,将用户界面离线(在内存中)渲染到图像上,然后以某种方式在内部跟踪状态是否有意义?

有人做过这样的事吗?或者谁能​​给我一些关于如何完成添加用户界面的见解。

【问题讨论】:

    标签: c++ firebreath


    【解决方案1】:

    假设您只关心窗口并且假设您不介意使用窗口插件,这是最简单的(但没有 HTML 元素可以浮动在插件上),它应该与在任何其他中创建 GUI 没有什么不同Windows 应用程序。

    您将获得一个显示 AttachedEvent 的窗口;当 DetachedEvent 被触发时,您需要停止使用该窗口。许多人在该父窗口内创建一个子窗口,并将其用于所有实际的真实代码,这使得使用其他抽象之一更容易,但这基本上就是它的全部内容。我不知道你具体如何使用 QT 或 wxwidget 来做,但你会创建一个 HWND 的子窗口,并让抽象为你做你的事情。

    至于它是否会在屏幕外渲染等等,我不知道;这完全取决于窗口系统。我没有理由知道您需要这样做,大多数事情只是直接吸引到 HWND,但是您可以通过无数种不同的方式来做到这一点。在我看来,您真正需要的是了解在 Windows 中绘图的实际工作原理。

    希望对你有帮助

    【讨论】:

    • 感谢您提供翔实的回答。我希望你不介意当我更进一步了解你的想法时。现在让我们坚持使用 Win32 和 GDI。我知道如何以编程方式添加菜单。因此,当用户单击菜单控件时,我必须将此类鼠标事件转发给 win32 系统。但是如何取回生成的图像呢?
    • 我不确定您所说的“获取结果图像”是什么意思;您绘制到 HWND,而不是绘制到一些屏幕外缓冲区,然后您需要获取像素并在屏幕上进行 blit。
    • 我将创建另一个线程。但首先我会做一些测试。再次感谢您的宝贵时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 2012-08-27
    相关资源
    最近更新 更多