【发布时间】: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