2009-02-10 6 views
6

Mam CToolbar i wewnątrz niego mam przycisk ze stylem BTNS_BUTTON | BTNS_DROPDOWN. Chciałbym, aby był to przycisk podziału, więc lewa strona przycisku to przycisk, a prawa strona ma rozwijane menu.dlaczego styl BTNS_DROPDOWN powoduje przesunięcie całego paska narzędzi o kilka pikseli w dół?

Aby to zakończyć, tworzę przycisk następnie zadzwonić :: SendMessage tak:

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

Działa to doskonale i tworzy przycisk podziału, ale także ma złego wpływu ruchu w dół paska narzędzi A kilka pikseli. Jeśli nie wyślę wiadomości, to nadal mam problem (i nie mam już przycisku podziału).

Jeśli zmienię styl przycisku na BTNS_BUTTON | BTNS_WHOLEDROPDOWN, to nie mam problemu, chociaż nie mam również przycisku podziału.

Każda wskazówka, co może być nie tak? Sądzę, że istnieje margines zastosowany do BNTS_DROPDOWN i powoduje to przesunięcie paska narzędzi w dół.

+0

Czy kiedykolwiek rozwiązałeś to? - Dostaję dokładnie ten sam problem :( – Alan

+0

Nie, nigdy tego nie rozwiązałem, skończyłem właśnie przesuwając okno o kilka pikseli, aby poprawić układ, to jest mniej niż idealne i może sprawić, że pasek narzędzi wygląda śmiesznie na wysokich DPI konfiguracje. – Jared

Odpowiedz

1

No to pytanie jest bardzo stary rzeczywiście ale ponieważ wydaje się na samym szczycie wyniki google na ten temat i na przyszłość przeglądania trochę dalej wydaje się, że istnieje jeden obejście (cytat z http://www.ureader.com/msg/1484852.aspx):

„nie wiem dlaczego, ale wzrost problemem, gdy ustawić styl BTNS_DROPDOWN od początku. mam jeśli dodać przyciski bez zestawu do BTNS_DROPWN aw następnej linii używam TB_SETBUTTONINFO do zmienić styl, wszystko działa dobrze. "

0

Mieliśmy ten sam problem z ustawieniem stylu BTNS_DROPDOWN na rozszerzeniu CToolBar, które było bardziej widoczne, gdy skalowanie DPI było powyżej 100%.

Łącze Floyd73 wydaje się być zepsute, ale próba ustawienia stylu rozwijania osobno przez setbuttoninfo nie zadziałała.

Rozwiązaniem okazało było ponowne skalę pasek po style zostały ustawione, aby wziąć pod uwagę nowe rozmiary przycisków za pomocą 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); 
} 

Trzymaliśmy to w NormalSize() funkcji do użycia na końcu dowolnej niestandardowej konfiguracji paska narzędzi, co powinno pozwolić nam złapać jakąkolwiek inną zabawną firmę zmieniającą rozmiar ze stylami przycisków.

Mam nadzieję, że pomoże to każdemu, kto nadal będzie mierzył się z tym samym problemem.

Powiązane problemy