无法使用wxWidgets为工具栏获得正确的Vista / 7主题

时间:2010-02-09 13:52:28

标签: c++ windows-7 windows-vista wxwidgets

我无法使用wxWidgets(c ++)在Vista / 7中获得适当的工具栏主题。由于某些未知原因,我现在得到了灰色条(正如您所见here)。我想让它看起来this。我已经链接到comctl32.lib(=> 5.82)并且UXTHEME已启用。这是代码:


#include <wx/wx.h>

class TestAppFrame: public wxFrame
{
        public:
                TestAppFrame(wxWindow *parent,
                             wxWindowID id = wxID_ANY,
                             const wxString &title = wxT("Test"),
                             const wxPoint &position = wxDefaultPosition,
                             const wxSize &size = wxSize(373, 206),
                             long style = wxDEFAULT_FRAME_STYLE | wxTAB_TRAVERSAL)
                : wxFrame(parent, id, title, position, size, style)
                {
                        wxToolBar *tb = CreateToolBar(wxNO_BORDER | wxHORIZONTAL | wxTB_FLAT);

                        tb->Realize();

                        SetToolBar(tb);
                }
};

class TestApp: public wxApp
{
        public:
                bool OnInit()
                {
                        if (!wxApp::OnInit())
                                return false;

                        wxInitAllImageHandlers();

                        TestAppFrame *frame = new TestAppFrame(NULL);

                        frame->Show(true);

                        return true;
                }
};

IMPLEMENT_APP(TestApp)

我在这里做错了什么?

最好的问候,
nhaa123

2 个答案:

答案 0 :(得分:1)

类似渐变钢筋的背景实际上不适合Vista / 7下的工具栏,如果你使用工具栏查看任何本机应用程序而不是钢筋或带(现在有点难以找到),你可以看到它们具有相同的灰色背景,所以我们认为这是正确的事情。

您应该能够在EVT_ERASE_BACKGROUND事件中自己绘制工具栏的背景,但默认情况下,wx尝试表现符合平台标准,在这种情况下,这意味着不使用任何渐变。

答案 1 :(得分:0)

您想使用wxAUIToolbar。它具有您描述的外观并与wxToolbar兼容,因此您可以在任何使用wxToolbar的地方使用它。

我会指出你的文档,除了没有。 (我自己有一个未解决的问题)