2009-02-10 61 views
6

我有一個CToolbar,裏面有一個樣式爲BTNS_BUTTON | BTNS_DROPDOWN的按鈕。我想使它成爲一個分離按鈕,所以按鈕的左側是一個按鈕,右側有一個下拉菜單。爲什麼BTNS_DROPDOWN樣式會導致整個工具欄向下移動幾個像素?

要完成這一點,我創建按鈕,然後我打電話:: SendMessage函數像這樣:

::SendMessage(hwndForButton, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DRAWDDARROWS); 

這個偉大的工程,並創建拆分按鈕,但也有向下移動的工具欄的不良影響幾個像素。如果我不發送消息,那麼我仍然有問題(並且我沒有分割按鈕了)。

如果我將按鈕的樣式更改爲BTNS_BUTTON | BTNS_WHOLEDROPDOWN,那麼我沒有問題,但我也沒有分割按鈕。

任何線索可能會在這裏出錯?我認爲應用於BNTS_DROPDOWN的邊距會導致工具欄向下移動。

+0

你有沒有解決這個問題? - 我得到了完全相同的問題:( – Alan 2009-09-05 20:53:44

回答

1

那麼這個問題是非常老的確但因爲它出現在該主題谷歌搜索結果的最頂端,並供將來參考瀏覽遠一點似乎有一個解決方法(從http://www.ureader.com/msg/1484852.aspx引用):

「不知道爲什麼,但問題上升時 我設置的BTNS_DROPDOWN風格從一開始,我已經當添加 按鈕沒有任何一組以BTNS_DROPWN,並在下一行我 使用TB_SETBUTTONINFO來改變風格,一切正常。「

0

我們在設置CToolBar擴展中的BTNS_DROPDOWN風格時遇到了同樣的問題,當DPI縮放超過100%時,CToolBar擴展更加明顯。

floyd73的鏈接似乎被破壞,但試圖通過setbuttoninfo單獨設置下拉樣式無效。

我們找到的解決方案是經過樣式已設置使用SetSizes中()考慮到新的按鈕大小來重新縮放工具欄:

auto imgList = GetToolBarCtrl().GetImageList(); 
if (imgList) 
{ 
    //Scale toolbar buttons to fit the correct scaled icons 
    CSize buttonSize(GetToolBarCtrl().GetButtonSize()); 
    CSize imageSize; 
    ImageList_GetIconSize(imageList, &imageSize.cx, &imageSize.cy); 

    SetSizes(buttonSize, imageSize); 
} 

我們刺入NormalSize()這個函數在任何自定義工具欄設置結束時使用,這應該允許我們使用按鈕樣式捕捉任何其他有趣的調整大小的業務。

希望這可以幫助任何人仍然面臨同樣的問題。

相關問題