Добавить кнопку в произвольное место на тулбаре
От: Birkin  
Дата: 24.04.09 15:02
Оценка:
Привет всем.

Можно ли как то с помощью WINAPI добавить кнопку в произвольное место на тулбаре? Т.е., скажем, имеется тулбар, добавляем кнопки:
    TBBUTTON _separator;
    ZeroMemory((void*)&_separator, sizeof(TBBUTTON));
    _separator.idCommand = 0;
    _separator.fsState = TBSTATE_ENABLED;
    _separator.fsStyle = BTNS_SEP;
    _separator.dwData = 0;

    // Toolbar buttons
    TBBUTTON tbButtons [ ] = 
    {
        {MAKELONG(IDM_ADD, ImageListID), IDM_ADD, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
        {MAKELONG(IDM_DELETE, ImageListID), IDM_DELETE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
        _separator,
        {MAKELONG(IDM_PLAY, ImageListID), IDM_PLAY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
        {MAKELONG(IDM_STOP, ImageListID), IDM_STOP, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
        _separator,
        {MAKELONG(IDM_SETTINGS, ImageListID), IDM_SETTINGS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
        _separator,
        {MAKELONG(IDM_HELP, ImageListID), IDM_HELP, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0},
    };

    // Add buttons.
    SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
    SendMessage(hWndToolbar, TB_ADDBUTTONS, (WPARAM)(numButtons+3/*separators*/), (LPARAM)&tbButtons);

кнопки добавляются в прямом порядке, слева-направо, в левую часть тулбара. Интересует возможность добавлять любую новую кнопку, в центр тулбара, или, скажем, в конец тулбара — в правую часть тулбара.
Re: Добавить кнопку в произвольное место на тулбаре
От: Андрей Россия  
Дата: 27.04.09 04:43
Оценка:
Здравствуйте, Birkin, Вы писали:

skip

TB_INSERTBUTTON тебе поможет
Re[2]: Добавить кнопку в произвольное место на тулбаре
От: Birkin  
Дата: 27.04.09 05:45
Оценка:
Здравствуйте, Андрей, Вы писали:

А>Здравствуйте, Birkin, Вы писали:


А>skip


А>TB_INSERTBUTTON тебе поможет


Возможно, я не совсем понятно выразился, вот здесь
http://savepic.ru/540382.jpg
показан тулбар как он должен выглядеть.
TB_INSERTBUTTON сообщение вставляет кнопку только в левую часть
тулбара.
Re[3]: Добавить кнопку в произвольное место на тулбаре
От: Андрей Россия  
Дата: 27.04.09 05:57
Оценка:
Здравствуйте, Birkin, Вы писали:

skip

Честно говоря, не очень понятно
С помощью TB_ADDBUTTON ты добавляешь кнопки
С помощью TB_INSERTBUTTON ты вставляешь их в нужном месте (задавая индекс кнопки, слева от которой нужно вставить новую)

А втыкать кнопки куда попало в тулбаре имхо не получится, не рассчитан он на это
Сделать это, конечно, можно
Но мне кажется, что геморроя будет слишком много

Зачем это, если не секрет?

Если уж очень нужно, можно попробовать сепараторов натыкать перед кнопкой или после нее
Re[4]: Добавить кнопку в произвольное место на тулбаре
От: Birkin  
Дата: 27.04.09 06:09
Оценка:
Здравствуйте, Андрей, Вы писали:

А>Здравствуйте, Birkin, Вы писали:


А>skip


А>Честно говоря, не очень понятно

А>С помощью TB_ADDBUTTON ты добавляешь кнопки
А>С помощью TB_INSERTBUTTON ты вставляешь их в нужном месте (задавая индекс кнопки, слева от которой нужно вставить новую)

А>А втыкать кнопки куда попало в тулбаре имхо не получится, не рассчитан он на это

А>Сделать это, конечно, можно
А>Но мне кажется, что геморроя будет слишком много

А>Зачем это, если не секрет?

прихоть заказчика

А>Если уж очень нужно, можно попробовать сепараторов натыкать перед кнопкой или после нее

такой вариант я рассматривал, но отбросил его из-за его потенциальной геморности...
При масштабировании крайняя кнопка Support должна быть всегда справа в тулбаре. Тут эти сепараторы поперёк горла станут...

Ещё варианты?
Re[5]: Добавить кнопку в произвольное место на тулбаре
От: dudkin  
Дата: 27.04.09 21:24
Оценка:
Здравствуйте, Birkin, Вы писали:

А>>А втыкать кнопки куда попало в тулбаре имхо не получится, не рассчитан он на это

А>>Сделать это, конечно, можно
А>>Но мне кажется, что геморроя будет слишком много

А>>Зачем это, если не секрет?

B>прихоть заказчика

А>>Если уж очень нужно, можно попробовать сепараторов натыкать перед кнопкой или после нее

B>такой вариант я рассматривал, но отбросил его из-за его потенциальной геморности...
B>При масштабировании крайняя кнопка Support должна быть всегда справа в тулбаре. Тут эти сепараторы поперёк горла станут...

B>Ещё варианты?


Все эти втыкания в произвольные места обычно делаются через disabled кнопки без текста. То есть все на самом деле left aligned только визуально выглядит как в разных местах.
если делаешь через OWNER DRAW так вообще нет проблем — не рисуй ничего для промежуточных невидимых кнопок
Re[5]: Добавить кнопку в произвольное место на тулбаре
От: Sashaka Россия  
Дата: 28.04.09 07:03
Оценка:
Здравствуйте, Birkin, Вы писали:

А>>Если уж очень нужно, можно попробовать сепараторов натыкать перед кнопкой или после нее

B>такой вариант я рассматривал, но отбросил его из-за его потенциальной геморности...
B>При масштабировании крайняя кнопка Support должна быть всегда справа в тулбаре. Тут эти сепараторы поперёк горла станут...

B>Ещё варианты?


В MFC такое делается с помощью Control Bars, не знаю есть ли аналог в WinAPI
Re[6]: Добавить кнопку в произвольное место на тулбаре
От: Birkin  
Дата: 28.04.09 07:06
Оценка:
Здравствуйте, dudkin, Вы писали:

D>Здравствуйте, Birkin, Вы писали:


А>>>А втыкать кнопки куда попало в тулбаре имхо не получится, не рассчитан он на это

А>>>Сделать это, конечно, можно
А>>>Но мне кажется, что геморроя будет слишком много

А>>>Зачем это, если не секрет?

B>>прихоть заказчика

А>>>Если уж очень нужно, можно попробовать сепараторов натыкать перед кнопкой или после нее

B>>такой вариант я рассматривал, но отбросил его из-за его потенциальной геморности...
B>>При масштабировании крайняя кнопка Support должна быть всегда справа в тулбаре. Тут эти сепараторы поперёк горла станут...

B>>Ещё варианты?


D>Все эти втыкания в произвольные места обычно делаются через disabled кнопки без текста. То есть все на самом деле left aligned только визуально выглядит как в разных местах.

D>если делаешь через OWNER DRAW так вообще нет проблем — не рисуй ничего для промежуточных невидимых кнопок

Спасибо за совет, обязательно попробую
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.