Расчет размера кнопки с использованием winapi - PullRequest
0 голосов
/ 08 сентября 2011

У меня есть кнопка на панели инструментов, которая может иметь изображение или выпадающее меню, и у меня есть следующий код

int text_width = CalcTextWidth(); // this function use GetTextExtentPoint32
int image_width = CalcImageWidth();

, затем я устанавливаю ширину кнопки как text_width + image_width, но в такой формуле пробелымежду текстом / изображением и границей пропущены, а также пропущен размер элемента раскрывающейся стрелки.

Как правильно рассчитать ширину кнопки на панели инструментов

PS Button_GetIdealSize() дает мне больше ширины, чемМне нужно, потому что он использует максимальную ширину элементов в выпадающем меню

Обновление : мне кажется, что нет способа правильно рассчитать кнопки, но флаг BTNS_AUTOSIZE для кнопки делает большинствочто мне нужно

размер кнопки по умолчанию?

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

может быть, это ответ, я не проверял

 HTHEME hTheme = NULL;
        if(_ThemeHelper::IsAppThemed())
          hTheme = _ThemeHelper::OpenThemeData(pInfo->hdr.hwndFrom, L"TOOLBAR");

        if (hTheme)
        {
           CSize size(0, 0);
           int state1 = (bHot && bSelected) ? TS_PRESSED : TS_HOT;
           _ThemeHelper::GetThemePartSize(hTheme, dc, TP_SPLITBUTTONDROPDOWN, state1, 0, TS_TRUE, &size);
0 голосов
/ 27 сентября 2011

Есть интересные ответы

Поскольку вы упомянули это, как правильно получить ширину выпадающего меню в Windows 7?До сих пор нам только что пришлось поменять код TP_SPLITBUTTONDROPDOWN на постоянную.

Комментарий Крейга Петерсона - среда, 11 ноября 2009 г. @ 0: 42

Мы используем библиотеку ExpressBars от DeveloperЭкспресс для панелей инструментов в RegexBuddy и RegexMagic.Они исправили проблему в сборке 47. Исправление состоит в том, что теперь они используют GetSystemMetrics (SM_CYHSCROLL), чтобы получить ширину раскрывающегося списка, когда операционная система Windows 7. Я не знаю, будет ли это иметь отношение кваш код, потому что они не использовали TP_SPLITBUTTONDROPDOWN в первую очередь.Обратите внимание, что я говорю о фактическом поле со списком на панели инструментов, а не о кнопке инструмента с выпадающим меню.

Комментарий Яна Гойваертса - среда, 11 ноября 2009 г. @ 9: 59

из http://www.micro -isv.asia / 2009/11 / windows-7-is-to-vista-what-xp-was-to-2000 /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...