Невозможно получить правильную тему Vista / 7 для панели инструментов с wxWidgets - PullRequest
1 голос
/ 09 февраля 2010

Я не могу получить подходящую тему для панелей инструментов в Vista / 7 с помощью wxWidgets (c ++). По какой-то неизвестной причине я теперь получаю серую полосу (как вы можете видеть здесь ). Я хочу, чтобы вместо этого этот выглядел. Я связался с 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 ]

1 голос
/ 10 февраля 2010

Фон, подобный градиентному стержню, на самом деле не подходит для панелей инструментов в Vista / 7, если вы посмотрите на любые собственные приложения, использующие панели инструментов, а не арматуру или ленты (которые, по общему признанию, немного трудно найти в настоящее время), вы можете видеть у них одинаковый серый фон, поэтому мы решили, что это правильно.

Вы должны быть в состоянии нарисовать фон панели инструментов самостоятельно в событии EVT_ERASE_BACKGROUND, но по умолчанию wx пытается вести себя в соответствии со стандартами платформы, и в этом случае это означает, что не используются никакие градиенты.

0 голосов
/ 10 февраля 2010

Вы хотите использовать wxAUIToolbar. Он имеет внешний вид, который вы описали, и совместим с wxToolbar, поэтому вы можете использовать его везде, где вы бы использовали wxToolbar.

Я бы указал на документацию, за исключением того, что ее нет. (У меня есть открытый вопрос об этом сам)

...