2

我按照这篇文章创建了一个简单的工具栏。

我只希望一些按钮旁边有文字,但不是全部。根据此处的 MSDN 文档,我必须使用TBSTYLE_EX_MIXEDBUTTONSwith 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),但它会在每个按钮旁边显示按钮文本。我错过了什么?

我还阅读了有关列表样式按钮的这篇文章。不幸的是,这个过程没有太多解释。它只是说明TBSTYLE_LIST将文本向右移动,而对于某些按钮(停止,刷新),文本只是神奇地完全消失了。不过,这似乎不会发生在我身上。

4

2 回答 2

2

根据这个 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.

于 2013-09-01T12:53:00.477 回答
1

扩展工具栏样式需要与TB_SETEXTENDEDSTYLE消息一起设置,它们不能传递给CreateWindowEx().

于 2013-09-01T12:51:57.780 回答