C++ 使用消息堆栈制作外观奇特的窗口

C++ 使用消息堆栈制作外观奇特的窗口,c++,wxwidgets,C++,Wxwidgets,我尝试制作外观奇特的消息查看器,其中消息按格式划分,其他smth背景。类似的。他们需要看起来像这样。我在wxWidgets中发现了什么来解决这个问题,以及为什么我不能使用它: wxHtmlWindow 支持最小的HTML(一些标记)。但这种html表示的大问题并没有填满父窗口。因此,宽度为100%的元素仅在标准窗口大小上具有100%的宽度。即使是p标记也没有单词包装(长段落与垂直的scroolbar排成一行) wxwebwiw 我需要有能力将生成的HTML设置为它,但IE必须先加载一些页面,我

我尝试制作外观奇特的消息查看器,其中消息按格式划分,其他smth背景。类似的。他们需要看起来像这样。我在wxWidgets中发现了什么来解决这个问题,以及为什么我不能使用它:

  • wxHtmlWindow

    支持最小的HTML(一些标记)。但这种html表示的大问题并没有填满父窗口。因此,宽度为100%的元素仅在标准窗口大小上具有100%的宽度。即使是p标记也没有单词包装(长段落与垂直的scroolbar排成一行)

  • wxwebwiw

    我需要有能力将生成的HTML设置为它,但IE必须先加载一些页面,我只能依赖IE背景。它有一些时间来加载页面,即使我设置了HTML字符串

  • wxRichText

    最适合我。但我不能像HTML的hr那样画线,也不能改变整个消息块的背景(以区别于普通背景)

  • 我需要像这样显示消息。但我不知道如何以及哪种工具更好

  • 实现这一点的一种方法是在WebKit后端使用wxWebView,但我担心Windows只能使用IE的引擎。然而,有一个项目允许您使用Gecko引擎。我在应用程序中使用WebKit渲染聊天,效果非常好(尽管我使用的是Qt)。()
  • 您总是可以按常规方式进行操作—只需为单个消息创建单独的小部件(我认为它在wxWidgets中称为“框架”)。这样你几乎可以得到无限的可能性。例如,您可以使用虚拟方法制作“AbstractMessage”,然后“AdministratorMessage”、“MOTD”等内容将变得轻而易举
  • wxRichText最适合我。但我不能像HTML的hr那样画线

    真的吗?你看过文件了吗

    ()

    这里有几个简单的想法:

    a。写一行带下划线的空格

    b。创建水平线的图像,使用WriteImage显示


    有趣的是,您可以使用您提到的3个控件中的任何一个来完成您想要的操作。使用
    wxHtmlWindow
    您只需正确设置其大小,使用
    wxWebView
    我完全不理解您的问题所在,而使用
    wxRichTextCtrl
    您可以对具有不同背景的区域使用单独的控件(你几乎可以肯定地使用一个具有不同风格的控件,但使用几个控件似乎更简单)。

    真棒的答案。我认为,gecko将为这件简单的事情增加开销。如今,每个应用程序一个gecko引擎的实例应该不是问题(廉价笔记本电脑有4GB+ram和至少2个内核)。当然,纯“wxWidgets”这种方法将是最有效的,因为本地绘图将永远是最好的。只需尝试“手动”最小化绘图效果即可。尝试使用尽可能多的现成wx组件。请记住,我是从Qt用户的角度编写它的,但原则应该是一样的。如果您只知道我在应用程序中必须做哪些变通方法,例如,为了克服许可问题…ofc我读了文档,并考虑了两种方法,但它们是临时修复Qt有VScrollContainer(或类似的smth)要保留控件并在需要时添加垂直滚动条,我将在wx中搜索类似的内容,thanksIt's just
    WXScrolledwindowo
    。我无法获取必须包含的内容。现在我有了wxFrame contains sizer,它包含WXScrolledwindowo,它包含sizer,它包含所有富文本控件。所以我为您需要的每个控件提供了滚动条d以适当调整内部文本控件的大小,使其适合其内容。但是有最小高度还是自动高度?因为消息可以长也可以短。固定高度不适用于此