我按照this article创建了一个简单的工具栏。
我只想让一些按钮旁边有文字,但不是全部。根据MSDN文档over here,我必须将TBSTYLE_EX_MIXEDBUTTONS
与TBSTYLE_LIST
一起使用。所以我将上面示例中的CreateWindowEx
调用更改为:
CreateWindowEx(TBSTYLE_EX_MIXEDBUTTONS, TOOLBARCLASSNAME, NULL,
WS_CHILD | TBSTYLE_LIST, 0, 0, 0, 0,
hWndParent, NULL, hInst, NULL);
其他一切都是一样的。即使我仍然只使用BTNS_AUTOSIZE
作为我的按钮样式(没有BTNS_SHOWTEXT
),它会显示每个按钮旁边的按钮文本。我错过了什么?
我也读过this article about list-style buttons。不幸的是,程序没有解释太多;它只是声明TBSTYLE_LIST
将文本向右移动,而对于某些按钮(停止,刷新),文本完全神奇地消失了。但这似乎并不适合我。
答案 0 :(得分:2)
根据this SO Answer,你需要
a)确保您链接到Common Controls v5.81(或更高版本)
b)使用第一个参数(扩展样式)调用CreateWindowEx()
为零
c)致电
SendMessage(hWndToolbar, TB_AUTOSIZE, 0, 0);
SendMessage(hWndToolbar, TB_SETEXTENDEDSTYLE, 0, (LPARAM)TBSTYLE_EX_MIXEDBUTTONS);
ShowWindow(hWndToolbar , SW_SHOW);
稍后启用扩展样式的原因是these extended styles are turned on with a message, not a style flag. Thus the TB_SETEXTENDEDSTYLE message
。
答案 1 :(得分:1)
扩展工具栏样式需要使用TB_SETEXTENDEDSTYLE
消息进行设置,不能传递给CreateWindowEx()
。