Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
zelim
77 / 77 / 9
Регистрация: 26.12.2011
Сообщений: 217
1

Смещенный Toolbar o_O

09.04.2013, 02:04. Просмотров 515. Ответов 3
Метки нет (Все метки)

Доброго времени суток, друзья.
Закончил работать с программой в Debug-версии, все работает идеально, но стоило откомпилировать в Release, как получил "смещенный" ToolBar.
Скрины прикрепляю.
Сам код создания тулбара:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
HWND InitToolBar(HWND hWnd) 
{
    HWND hToolBar;
    int nButId[NUM_BUTTONS] = {ID_GNEW, ID_GOPEN, ID_GSAVE, ID_SEP, ID_GVER, ID_GDUGA, ID_GTABLE, ID_SEP, ID_ABOUT, ID_EXIT};
    int nButStyle[NUM_BUTTONS] = {TBSTYLE_BUTTON, TBSTYLE_BUTTON, TBSTYLE_BUTTON, TBSTYLE_SEP,
                                  TBSTYLE_BUTTON, TBSTYLE_BUTTON, TBSTYLE_BUTTON, TBSTYLE_SEP, TBSTYLE_BUTTON, TBSTYLE_BUTTON};
 
 
    TBBUTTON tbb[NUM_BUTTONS];
 
    memset(tbb, 0, sizeof(tbb));
 
    for(int i=0; i < NUM_BUTTONS; i++) {
        if(nButId[i] == ID_SEP)
            tbb[i].iBitmap = SEPARATOR_WIDTH;
        else
            tbb[i].iBitmap = i;
 
        tbb[i].idCommand = nButId[i];
        tbb[i].fsState = TBSTATE_ENABLED;
        tbb[i].fsStyle = nButStyle[i];
        tbb[i].iString = i;
    }
 
    hToolBar = CreateToolbarEx(hWnd, WS_CHILD | WS_VISIBLE | WS_BORDER | TBSTYLE_TOOLTIPS | TBSTYLE_WRAPABLE,
        ID_TOOLBAR, NUM_BUTTONS, GetModuleHandle(NULL), IDR_TOOLBAR1, 
        tbb, NUM_BUTTONS, 0, 0, 0, 0, sizeof(TBBUTTON));
 
    TCHAR* str[NUM_BUTTONS] = {TEXT("Новый"), TEXT("Открыть"), TEXT("Сохранить"), TEXT(""),
                              TEXT("Вершина"), TEXT("Ребро"), TEXT("Настройки"), TEXT(""),
                              TEXT("О программе"), TEXT("Выход")};
 
    for(int i=0;i<NUM_BUTTONS;i++)
        SendMessage(hToolBar, TB_ADDSTRING, 0, (LPARAM) str[i]);
 
    return hToolBar;
}
Что может не нравиться студии? ))
И текст убирать как-то нет желания.
0
Миниатюры
Смещенный Toolbar o_O   Смещенный Toolbar o_O  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2013, 02:04
Ответы с готовыми решениями:

Создание ToolBar: CreateToolbarEx()
Здравствуйте! Не получается создать ToolBar. На мой взгляд все правильно, но вылазит ошибка ...

Моя иконка в Toolbar
что нужно передать в iBitmap стуктуры TBBUTTON чтобы установить туда свою картинку... ownerdraw...

Создание кнопок на ToolBar-е
Создаю Win32 Application, в оконной процедуре главного окна пишу (WM_CREATE): DWORD dwStyle;...

Использование иконок из dll в toolbar
На первый взгляд задача является тривиальной, но начав ее решать я зашел в тупик. В общем,...

ToolBar отцы и дети. В чём дело не понимаю! научите :(
Пишу модуль для одной проги, всё простенько. Есть там тулбарчик древний. Задача сделать тулбарчик...

3
castaway
Эксперт С++
4934 / 3039 / 455
Регистрация: 10.11.2010
Сообщений: 11,119
Записей в блоге: 10
Завершенные тесты: 1
09.04.2013, 12:41 2
О каком смещении идет речь? По скринам не понятно.
0
Twas
1 / 1 / 0
Регистрация: 20.06.2012
Сообщений: 28
09.04.2013, 13:48 3
На первом скрине видно, что слова на кнопках не те, что надо.
На втором скрине, как я понял, показано, как должно быть.
0
zelim
77 / 77 / 9
Регистрация: 26.12.2011
Сообщений: 217
09.04.2013, 13:54  [ТС] 4
Twas, совершенно верно.
Проблему решил своими силами.
Кстати, может кому пригодится, готовая функция для создания Панели инструментов (прокомментировал основные моменты):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#define NUM_BUTTONS 10 // кол-во кнопок с учетом разделителей
#include <tchar.h>
...
HWND InitToolBar(HWND hWnd) // принимаем описатель родителя
{
    HWND hToolBar;
 
        // ID кнопок
    int nButId[NUM_BUTTONS] = {ID_GNEW, ID_GOPEN, ID_GSAVE, ID_SEP, ID_GVER, ID_GDUGA, ID_GTABLE, ID_SEP, ID_ABOUT, ID_EXIT}; 
 
        // стили TBSTYLE_BUTTON - кнопка, TBSTYLE_SEP - разделитель
    int nButStyle[NUM_BUTTONS] = {TBSTYLE_BUTTON, TBSTYLE_BUTTON, TBSTYLE_BUTTON, TBSTYLE_SEP,
                                  TBSTYLE_BUTTON, TBSTYLE_BUTTON, TBSTYLE_BUTTON, TBSTYLE_SEP, TBSTYLE_BUTTON, TBSTYLE_BUTTON}; 
 
    TBBUTTON tbb[NUM_BUTTONS];
 
        // подписи к кнопкам. На месте разделителей пустые строки.
    const TCHAR* str[NUM_BUTTONS] = {TEXT("Новый"), TEXT("Открыть"), TEXT("Сохранить"), TEXT(""),
                              TEXT("Вершина"), TEXT("Ребро"), TEXT("Настройки"), TEXT(""),
                              TEXT("О программе"), TEXT("Выход")}; 
 
    memset(tbb, 0, sizeof(tbb));
 
    for(int i=0; i < NUM_BUTTONS; i++) {
        if(nButId[i] == ID_SEP)
            tbb[i].iBitmap = SEPARATOR_WIDTH;
        else
            tbb[i].iBitmap = i;
 
        tbb[i].idCommand = nButId[i];
        tbb[i].fsState = TBSTATE_ENABLED;
        tbb[i].fsStyle = nButStyle[i];
        tbb[i].iString = (INT_PTR) str[i]; // вот недочет, который исправил
    }
 
        // создаем ToolBar
    hToolBar = CreateToolbarEx(hWnd, WS_CHILD | WS_VISIBLE | WS_BORDER | TBSTYLE_TOOLTIPS | TBSTYLE_WRAPABLE,
        ID_TOOLBAR, NUM_BUTTONS, GetModuleHandle(NULL), IDR_TOOLBAR1, 
        tbb, NUM_BUTTONS, 0, 0, 0, 0, sizeof(TBBUTTON)); 
 
    return hToolBar;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2013, 13:54

Стиль для ToolBar. Чтобы его можно было передвигать по форме
Во многих программах панели инструментов можно передвигать мышкой. Не могу найти, как это...

Toolbar как установить свои, созданые в редакторе ресурсов visual studio битмапы на кнопки?
На сайте MSDN есть пример создания toolbar. Там для кнопок используют стандартные изображения...

[C++] Добавление пунктов к кнопке стиля "с выпадением" (TBSTYLE_REGISTERDR) на панели инструментов (dropdown button on toolbar)
Добрый день. Чистый WinAPI, без MFC и прочего. Создается панель инструментов с помощью вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru