2013-09-01 51 views
2

我按照this article創建了一個簡單的工具欄。如何隱藏工具欄按鈕上的文本(帶有TBSTYLE_LIST的TBSTYLE_EX_MIXEDBUTTONS不會隱藏文本)

我只想要一些按鈕旁邊有文字,但不是全部。根據MSDN文檔over here,我不得不使用TBSTYLE_EX_MIXEDBUTTONSTBSTYLE_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將文本向右移動,而對於某些按鈕(停止,刷新),文本完全神奇地消失。但這似乎並沒有發生在我身上。

回答

2

this SO Answer,你需要

一)請確保您連接到公共控件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

+0

我討厭WinAPI,花了兩個小時才找到這個。 – Lothar

1

擴展工具欄樣式需要設置爲TB_SETEXTENDEDSTYLE消息,它們不能傳遞給CreateWindowEx()

+0

是的......在這裏我想'CreateWindowEx'中的'dwExStyle'類似於可用於擴展樣式的聲音。這個答案有效,但另一個人速度更快,聲譽更低。 – dialer

+0

他實際上慢了一分鐘,但讓我不要狡猾:) –

+0

堅果!我收回之前說過的話。我再次檢查了我的類庫中的代碼,它僅適用於「TB_SETSTYLE」,而不適用於擴展樣式。對於那個很抱歉! :-) –