2009-02-10 20 views
6

CToolbar'ım var ve içinde BTNS_BUTTON | BTNS_DROPDOWN stili olan bir düğme var. Bölünmüş bir düğme yapmak istiyorum, bu yüzden düğmenin sol tarafı bir düğmedir ve sağ tarafta bir açılır menü vardır.BTNS_DROPDOWN stili neden tüm araç çubuğunun birkaç pikseli aşağı çekmesine neden oluyor?

bu tamamlamak için, o zaman düğmesi oluşturmak ararım :: SendMessage'i şöyle:

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

Bu harika çalışıyor ve bölünmüş düğme yaratmak değil, aynı zamanda araç çubuğu a aşağı hareketli kötü etkiye sahiptir çift ​​piksel İletiyi göndermezsem, hâlâ sorunum var (ve artık bölünmüş düğmeye sahip değilim).

Düğmenin stilini BTNS_BUTTON | BTNS_WHOLEDROPDOWN olarak değiştirirseniz, bölme düğmem de olmamasına rağmen bir sorunum yok.

Burada nelerin yanlış gittiğine dair bir ipucu var mı? BNTS_DROPDOWN için uygulanan bir kenar boşluğu olduğunu ve araç çubuğunun aşağı doğru hareket etmesini sağladığını düşünüyorum.

+0

Bunu hiç çözdünüz mü? - Ben tam olarak aynı problemi alıyorum :( – Alan

+0

Hayır, bunu asla çözmedim. Pencereyi bir çift piksele göre düzeltmek için harcadım. Bu, ideal olandan daha az ve araç çubuğunun yüksek DPI'da komik görünmesine neden olabilir. kurulumlar. – Jared

cevap

1

Eh bu soru çok eski gerçekten ama buna (http://www.ureader.com/msg/1484852.aspx alıntı) bir geçici çözüm olduğu görülmektedir biraz daha gezen konu üzerine google sonuçlarının en üstünde ve ileride başvurmak için görünür beri:

"neden biliyorum ama yapmayın sorun yükselişi ben baştan BTNS_DROPDOWN stili ayarlamak zaman. Ben ettik BTNS_DROPWN için setin herhangi olmadan ve ben TB_SETBUTTONINFO kullanmak sonraki satırda düğmeleri eklerseniz stili değiştirmek, her şey iyi çalışıyor. "

0

DPI ölçeklendirme% 100'ün üzerinde olduğunda daha belirgin hale getirilen CToolBar uzantısında BTNS_DROPDOWN stilini ayarlama ile aynı sorunu yaşadık.

floyd73'ün bağlantısı bozuk görünüyor, ancak setbuttoninfo aracılığıyla açılır stili ayrı ayrı ayarlamaya çalışmadı.

bulduğumuz çözüm oldu stilleri) (SetSizes kullanarak yeni düğme boyutları dikkate almak ayarlandıktan sonra araç çubuğu-Ölçeği yeniden:

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); 
} 

Biz normalsize içine bu sıkışmış) (function herhangi bir özel araç çubuğu kurulumunun sonunda kullanmak için, düğme stilleri ile başka herhangi bir eğlenceli yeniden boyutlandırma işini yakalamamıza izin vermeli.

Bu, hala aynı sorunla karşılaşan herkese yardımcı olur.

İlgili konular