【问题标题】:Grey background toolbar C++灰色背景工具栏 C++
【发布时间】:2011-10-07 00:18:53
【问题描述】:

我正在尝试使用 Win32 API(无 MFC 或 VC++)在 C++ 中创建工具栏。我能够创建一个看起来像这样的工具栏,没有背景,只有基本的窗口颜色。

我希望它看起来像下面的图片,带有光泽条和灰色渐变

我尝试使用TBSTYLE_FLAT,当我遇到未定义的错误时,我声明它等于0x0800,但仍然没有任何区别。我需要添加更多属性吗?我将在下面粘贴我的代码。

HWND hTbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)12, GetModuleHandle(NULL), NULL);
        SendMessage(hTbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);

        TBBUTTON tb[5];
        TBADDBITMAP tBmp;

        tBmp.hInst =  HINST_COMMCTRL;
        tBmp.nID = IDB_STD_SMALL_COLOR;
        SendMessage(hTbar, TB_ADDBITMAP, 0, (LPARAM)&tBmp);
        ZeroMemory(tb, sizeof(tb));

        tb[0].iBitmap = STD_FILEOPEN;
        tb[0].fsState = TBSTATE_ENABLED;
        tb[0].fsStyle = TBSTYLE_BUTTON;

        SendMessage(hTbar, TB_ADDBUTTONS, sizeof(tb)/sizeof(TBBUTTON), (LPARAM)&tb);

我使用的是 Windows 7 和 Win32 C++ API。谢谢。

【问题讨论】:

  • 你的应用有common controls manifest吗?
  • 是的。我的应用程序上有类似 Windows 7 的闪亮按钮。
  • 使用 Spy++ 查看它设置了哪些样式;我想它也有可能是自定义绘制的。或者它可能是主题数据的一部分。

标签: c++ winapi user-interface styles toolbar


【解决方案1】:

背景可能来自父窗口。要免费获得视觉样式背景渐变效果,请将您的工具栏放在rebar 中,并使用 TBSTYLE_FLAT 和 TBSTYLE_TRANSPARENT 工具栏样式。

【讨论】:

  • 我使用WS_CHILD | WS_VISIBLE | WS_BORDER | TBSTYLE_TRANSPARENT | TBSTYLE_FLAT 作为工具栏的属性。我得到 TBSTYLE_FLAT is not declared in this scope. 相同的 TBSTYLE_TRANSPARENT。
  • @coolcoder:您可能想在继续之前修复您的标头,如果没有正确的标头文件,您将无法编码...
  • 我应该添加什么标题?我包括commctrl.h windows.h
  • @coolcoder:你可能需要设置#define _WIN32_IE 0x0300
猜你喜欢
  • 2013-10-10
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多