Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
zheka995
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 7
1

Toolbar как установить свои, созданые в редакторе ресурсов visual studio битмапы на кнопки?

14.02.2015, 18:59. Просмотров 1020. Ответов 2
Метки нет (Все метки)

На сайте MSDN есть пример создания toolbar. Там для кнопок используют стандартные изображения STD_FILENEW, STD_FILEOPEN, STD_FILESAVE. Что нужно поменять что бы было свое изображение например изображение с ид IDB_BITMAP1?
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
HIMAGELIST g_hImageList = NULL;
 
HWND CreateToolbarFromResource(HWND hWndParent)
{
    // Declare and initialize local constants.
    const int ImageListID    = 0;
    const int numButtons     = 3;
    const int bitmapSize     = 16;
    
    const DWORD buttonStyles = BTNS_AUTOSIZE;
 
    // Create the toolbar.
    HWND hWndToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, 
                                      WS_CHILD | TBSTYLE_WRAPABLE, 0, 0, 0, 0,
                                      hWndParent, NULL, g_hInst, NULL);
    if (hWndToolbar == NULL)
        return NULL;
 
    // Create the image list.
    g_hImageList = ImageList_Create(bitmapSize, bitmapSize, // Dimensions of individual bitmaps.
                                    ILC_COLOR16 | ILC_MASK, // Ensures transparent background.
                                    numButtons, 0);
 
    // Set the image list.
    SendMessage(hWndToolbar, TB_SETIMAGELIST, 
                (WPARAM)ImageListID, 
                (LPARAM)g_hImageList);
 
    // Load the button images.
    SendMessage(hWndToolbar, TB_LOADIMAGES, 
                (WPARAM)IDB_STD_SMALL_COLOR, 
                (LPARAM)HINST_COMMCTRL);
 
    // Load the text from a resource.
    
    // In the string table, the text for all buttons is a single entry that 
    // appears as "~New~Open~Save~~". The separator character is arbitrary, 
    // but it must appear as the first character of the string. The message 
    // returns the index of the first item, and the items are numbered 
    // consecutively.
    
    int iNew = SendMessage(hWndToolbar, TB_ADDSTRING, 
                           (WPARAM)g_hInst, (LPARAM)IDS_NEW); 
 
    // Initialize button info.
    // IDM_NEW, IDM_OPEN, and IDM_SAVE are application-defined command constants.
    
    TBBUTTON tbButtons[numButtons] = 
    {
        { MAKELONG(STD_FILENEW,  ImageListID), IDM_NEW,  TBSTATE_ENABLED, buttonStyles, {0}, 0, iNew },
        { MAKELONG(STD_FILEOPEN, ImageListID), IDM_OPEN, TBSTATE_ENABLED, buttonStyles, {0}, 0, iNew + 1},
        { MAKELONG(STD_FILESAVE, ImageListID), IDM_SAVE, 0,               buttonStyles, {0}, 0, iNew + 2}
    };
 
    // Add buttons.
    SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
    SendMessage(hWndToolbar, TB_ADDBUTTONS,       (WPARAM)numButtons,       (LPARAM)&tbButtons);
 
    // Resize the toolbar, and then show it.
    SendMessage(hWndToolbar, TB_AUTOSIZE, 0, 0); 
    ShowWindow(hWndToolbar,  TRUE);
    
    return hWndToolbar;
}
Подскажите пожалуйста!!! Никак не получается.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2015, 18:59
Ответы с готовыми решениями:

Дин. созданые кнопки двигать мышкой по форме, удалять, изменять параметры
Дин. созданые кнопки двигать мышкой по форме, удалять, изменять параметры - на...

Свои шорткоды кнопки в редакторе
Всем прива. Возможно ли в Opencart 2 сделать свои кнопки в редакторе? Я хочу...

Как установить visual studio?
Скачал Visual studio c торрента. Объясните, пожалуйста, как это всё установить?...

Как установить OpenGL на Visual Studio?
Можете пожалуйста поделиться ссылкой на подробное описание как установить...

Как установить Visual Studio 2010?
Как установить Visual Studio 2010 на Windows 7 ?

2
eseeelil
1 / 1 / 3
Регистрация: 13.02.2015
Сообщений: 28
14.02.2015, 21:41 2
Скажу одно, комбинировать стандартные и свои (из ресурсов) нельзя.
Ща скину свой класс тул бара... только он плохой, но что бы понять как, возможно сойдёт:
42 строка, загрузка битмапа из ресурсов.

Toolbar.h
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <Windows.h>
#include <CommCtrl.h>
#include "Window.h"
 
class Toolbar : public Window {
public:
            Toolbar(HWND hParent);
            ~Toolbar(void);
 
    int     addButton(int id, int bmpRes, unsigned char fsStyle = BTNS_BUTTON, unsigned char fsState = TBSTATE_ENABLED);
    int     addSeparetor(unsigned char fsState = TBSTATE_ENABLED);
    void    OnResize(int w,int h);
 
private:
    void    CreateToolBar(HWND hParent);
    
    HIMAGELIST  myimg;
};
 
#endif


Toolbar.cpp
Кликните здесь для просмотра всего текста

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "Toolbar.h"
#include "resource.h"
 
 
Toolbar::Toolbar(HWND hParent)
{
    CreateToolBar(hParent);
}
 
Toolbar::~Toolbar(void)
{
    ImageList_Destroy(myimg);
}
 
void Toolbar::CreateToolBar(HWND hParent) 
{
    const int bitmapSize     = 16;
    
    // Create the toolbar.
    handle = CreateWindowEx(0, TOOLBARCLASSNAME, NULL,
        WS_CHILD | TBSTYLE_WRAPABLE | CCS_NODIVIDER | TBSTYLE_TOOLTIPS, // Styles
        0, 0, 0, 0, hParent, NULL, Window::hModule, NULL);
 
    if (!handle) {
        MessageBox(0,TEXT("Failed to create a tool bar"),TEXT("NULL"),MB_OK|MB_ICONERROR);
        return;
    }
 
    SendMessage(handle, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
    
    if(!(myimg = ImageList_Create(bitmapSize,bitmapSize,ILC_COLOR24 | ILC_MASK, 1 , 16)))
        return;
 
    SendMessage(handle, TB_SETIMAGELIST, (WPARAM)0, (LPARAM)myimg);
 
    SendMessage(handle, TB_SETBUTTONSIZE, 0, MAKELPARAM(bitmapSize, bitmapSize));
    ShowWindow(handle,  SW_SHOWNORMAL);
}
 
int Toolbar::addButton(int id, int bmpRes, unsigned char fsStyle, unsigned char fsState) 
{
    HBITMAP hBmp = LoadBitmap(Window::hModule,MAKEINTRESOURCE(bmpRes));
    int index = ImageList_AddMasked(myimg,hBmp,RGB(255,255,255));
    DeleteObject(hBmp);
 
    TBBUTTON tbutton = {0};
    tbutton.idCommand = id;
    tbutton.iBitmap = index;
    tbutton.fsState = fsState;
    tbutton.fsStyle = fsStyle;  
        
    if(SendMessage(handle, TB_INSERTBUTTON, (WPARAM)0,(LPARAM)&tbutton))
        return index;
 
    return -1;
}
 
int Toolbar::addSeparetor(unsigned char fsState) 
{
    TBBUTTON tbutton = {0};
    tbutton.idCommand = 0;
    tbutton.iBitmap = 0;
    tbutton.fsState = fsState;
    tbutton.fsStyle = BTNS_SEP; 
        
    return (int)SendMessage(handle, TB_INSERTBUTTON, (WPARAM)0,(LPARAM)&tbutton);
}
 
void Toolbar::OnResize(int w, int h) 
{
    /*register RECT r;
    GetClientRect(handle,&r);
    MoveWindow(handle, 0, 0, w, r.bottom, 0);*/
    SendMessage(handle,TB_AUTOSIZE,0,0);
}
0
zheka995
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 7
15.02.2015, 22:03  [ТС] 3
Подскажите где вы создаете объект класса Toolbar, если в switch при возникновении события WM_CREATE тогда он пишет что нельзя создавать, а если до switch то тогда при запуске главное окно не отображает.

Добавлено через 5 часов 49 минут
Спасибо за помощь, все получилось.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2015, 22:03

Ошибка в редакторе кода. Visual Studio 2010
Ребята, что то случилось с вижуал студией. Теперь, открыв(создав) проект, при...

FLTK как установить на Visual studio 2013
скачал с сайта архив fltk-1.3.2-source.tar.gz студия на англ языке у меня...

Как установить WCF и подключить к Visual Studio?
Уж не въезжаю, что вообще нужно сделать, чтоб пользоваться wcf? Скачал,...


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

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

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