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

Смещенный Toolbar o_O - C++ WinAPI

09.04.2013, 02:04. Просмотров 491. Ответов 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;
}
Что может не нравиться студии? ))
И текст убирать как-то нет желания.
http://www.cyberforum.ru/win-api/thread641978.html
0
Миниатюры
Смещенный Toolbar o_O   Смещенный Toolbar o_O  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2013, 02:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Смещенный Toolbar o_O (C++ WinAPI):

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

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

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

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

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

3
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 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 как установить свои, созданые в редакторе ресурсов visual studio битмапы на кнопки?
На сайте MSDN есть пример создания toolbar. Там для кнопок используют...

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

Что это? O_o
Что вычисляет данная программа и с какой логикой(если это не бред)? Program...

Упрощение кода O_o
Всем привет. Есть вопрос по очень простой консольной программе, которая...


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

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

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