c++ - 无法使用 wxWidgets 为工具栏获取合适的 Vista/7 主题

标签 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

最佳答案

类似钢筋的渐变背景实​​际上不适合 Vista/7 下的工具栏,如果您查看任何使用工具栏而不是钢筋或色带(诚然,现在很难找到)的 native 应用程序,您会发现它们具有相同的灰色背景,因此我们认为这是正确的做法。

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

关于c++ - 无法使用 wxWidgets 为工具栏获取合适的 Vista/7 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2229495/

相关文章:

delphi - 自动程序更新和 Windows 7

c++ - XP 滚动条在 Windows7/Vista 中乱七八糟

c++ - 多播在 Windows Vista 上不工作

javac 无法识别 java 7

c++ - 在 MFC 中禁用 CheckedListBox 中的项目

delphi - 开发 Delphi Windows 7 应用程序的规则

c++ - Qt 5.5 和 OpenGL : Retrieving device info

python - 如何通过 python/pyqt 创建 Windows 7 跳转列表?

使用 Visual Studio 2015 计算国际字符的 C++ 代码

c++ - 如何使用socket编程获取系统日期和时间