使用消息堆栈制作漂亮的外观 window

Making a fancy looking window with messages stack

我尝试制作外观精美的消息查看器,其中消息按格式划分,其他 smth 背景。相似的。他们需要看起来像这样 - http://pastebin.com/GU1Lq087。我在 wxWidgets 中找到了什么来解决这个问题,以及为什么我不能使用它:

  1. wxHtmlWindow

    支持最少的 HTML(几个标签)。但是这个有一个大问题 - html 表示不填充父级 window。所以 width=100% 的元素只有在标准 window 尺寸上才会有 100% 的宽度。甚至 p 标签也没有自动换行(长长的段落与垂直滚动条排成一行)。

  2. wxWebWiew

    我需要能够为它设置生成HTML,但是IE必须先加载一些页面,我只能依赖IE后台。它有一些时间来加载页面,即使我设置了 HTML-string.

  3. wxRichText

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

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

  1. 实现此目的的一种方法是将 wxWebView 与 WebKit 后端一起使用,但恐怕 Windows 只能使用 IE 的引擎。但是,有一个项目允许您使用 Gecko 引擎。我使用 WebKit 在我的应用程序中呈现聊天,它工作得非常好(尽管我使用的是 Qt)。 (http://www.kirix.com/labs/wxwebconnect.html)
  2. 您总是可以按常规方式进行 - 只需为单个消息创建单独的小部件(我认为它在 wxWidgets 中称为 "frame")。这样你就可以获得几乎无限的可能性。例如。您可以使用虚拟方法创建 "AbstractMessage",然后 "AdministratorMessage"、"MOTD" 等内容将变得轻而易举。

wxRichText 最适合我。但是我不能像 HTML 的 hr

那样画线

真的吗?你看过文档了吗?

( http://docs.wxwidgets.org/trunk/overview_richtextctrl.html )

这里有几个简单的想法:

一个。写一行空白,加下划线。

http://docs.wxwidgets.org/trunk/classwx_rich_text_ctrl.html#a333b2e675617ed2299cf91e7c0dbd0d8

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

显示它

http://docs.wxwidgets.org/trunk/classwx_rich_text_ctrl.html#a1315611c0741d03e852ee26eba3a9d94

有趣的是,您可以使用您提到的 3 个控件中的 任何 来完成您想要的。使用 wxHtmlWindow 你只需要正确设置它的大小,使用 wxWebView 我根本不明白你的问题是什么,使用 wxRichTextCtrl 你可以只对这些区域使用单独的控件具有不同的背景(您几乎可以肯定地使用具有不同样式的单个控件,但使用多个控件似乎更简单)。