Нужен пример ToolBarа
От: joawl  
Дата: 20.01.02 09:06
Оценка:
Что-то корявый у меня тулбар получился... без примера нормальной реализации не могу понять, в чем ошибки. Если есть у кого либо кусок кода, который работает, выложите здесь, пожалуйста :).
Re: Нужен пример ToolBarа
От: Sasparella США  
Дата: 20.01.02 15:29
Оценка:
Здравствуйте joawl, Вы писали:

J>Что-то корявый у меня тулбар получился... без примера нормальной реализации не могу понять, в чем ошибки. Если есть у кого либо кусок кода, который работает, выложите здесь, пожалуйста .


CMainFrame::OnCreate()
{
//..........
    if (!m_wndMouseModeBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
        | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,CRect(0,0,0,0),AFX_IDW_TOOLBAR + 1) ||
        !m_wndMouseModeBar.LoadToolBar(IDR_VISUAL_TOOLS_TOOLBAR))
    {
        TRACE0("Failed to create toolbar\n");
        return -1;      // fail to create
    }

        m_wndMouseModeBar.EnableDocking(CBRS_ALIGN_ANY);
        DockControlBar(&m_wndMouseModeBar,AFX_IDW_DOCKBAR_RIGHT);
//.........
void CMainFrame::OnViewMouse() 
{
    ShowControlBar(&m_wndMouseModeBar,!m_wndMouseModeBar.IsWindowVisible(),FALSE);    
}



Вроде так...



Саша.
Re[2]: Нужен пример ToolBarа
От: joawl  
Дата: 20.01.02 16:07
Оценка:
Эхх... mfc — хорошо, но нельзя ли то же самое, но на API?
Re: Нужен пример ToolBarа
От: IgoX Россия  
Дата: 20.01.02 16:26
Оценка:
Здравствуйте joawl,
Сам ищу, нашел на Builder как мне нужно, но он с ошибками может поможет.
http://leunen.com/cbuilder/appbarsrc.zip
Re[3]: Нужен пример ToolBarа
От: Sasparella США  
Дата: 20.01.02 17:57
Оценка:
Здравствуйте joawl, Вы писали:

J>Эхх... mfc — хорошо, но нельзя ли то же самое, но на API?


Ну это нетрудно переделать — идея та-же просто вместо CToolbarCtrl::Create нужно юзать вот это вот

HWND CreateToolbarEx(
    HWND hwnd,
    DWORD ws,
    UINT wID, 
    int nBitmaps, 
    HINSTANCE hBMInst, 
    UINT_PTR wBMID, 
    LPCTBBUTTON lpButtons, 
    int iNumButtons, 
    int dxButton, 
    int dyButton, 
    int dxBitmap, 
    int dyBitmap, 
    UINT uStructSize
);


Классы MFC же большей частью враперы для функций, API — так что все остальные параметры останутся.


Саша.
Re[4]: Нужен пример ToolBarа
От: joawl  
Дата: 20.01.02 18:56
Оценка:
А, ну да...
В общем-то, почти все заработало. Кроме картинок на кнопках =/ Объясните, пожалуйста, что передается в параметрах HINSTANCE hBMInst и UINT_PTR wBMID, а то я методом тыка получил не свои битмапы, а мусор :)
Re[5]: Нужен пример ToolBarа
От: Юнусов Булат Россия  
Дата: 20.01.02 21:22
Оценка:
Здравствуйте joawl, Вы писали:

J>А, ну да...

J>В общем-то, почти все заработало. Кроме картинок на кнопках =/ Объясните, пожалуйста, что передается в параметрах HINSTANCE hBMInst и UINT_PTR wBMID, а то я методом тыка получил не свои битмапы, а мусор

hBMInst это картинка тулбара в виде обычного битмапа
(не тулбара а битмапа просто)
как тут в сообщение картинку вставить — я на ночер глядючи не въеду что то



wBMID это такая вот конструкция — в общем кнопки

static TBBUTTON tbButtons[] = 
{
  { 0, IDB_START,    TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0 },
  { 1, IDB_NEXT,     TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0 },
  { 2, IDB_PATTERN,  TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0 },
  { 3, IDB_FIXATION, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0 },
  { 4, IDB_STOP,     TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0 },
  { 5, IDB_EXIT,     TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0 }
};




    hToolBar = CreateToolbarEx(hWnd,
        WS_CHILD | WS_VISIBLE | WS_BORDER | TBSTYLE_TOOLTIPS,
        ID_TOOLBAR, // ид картинки с кнопками (широкая такая :))
        6, // сколько кнопок в битмапе с кнопками
        hInst,
        TOOLBAR_BMP,
        (LPCTBBUTTON)&tbButtons, // адрес массива с кнопками
        6,  // сколько кнопок в массиве с кнопками
        32, 32, // Размеры поставь свои любимые - от картинки зависит
        32, 32, // Читай доку
        sizeof(TBBUTTON));

        // Потом по ходу прорраммы (опционально) можно прятать (греить) кнопки которые не нужны по логике в данный
        // текущий момент
    SendMessage(hToolBar, TB_HIDEBUTTON, IDB_NEXT,     MAKELONG(TRUE,  0));
    SendMessage(hToolBar, TB_HIDEBUTTON, IDB_PATTERN,  MAKELONG(FALSE, 0));
    SendMessage(hToolBar, TB_HIDEBUTTON, IDB_START,    MAKELONG(FALSE, 0));
    SendMessage(hToolBar, TB_HIDEBUTTON, IDB_FIXATION, MAKELONG(TRUE, 0));
    SendMessage(hToolBar, TB_HIDEBUTTON, IDB_STOP,     MAKELONG(TRUE,  0));



Удачи Булат
Re[6]: Нужен пример ToolBarа
От: Юнусов Булат Россия  
Дата: 21.01.02 04:09
Оценка:
Здравствуйте Юнусов Булат, Вы писали:

Вчера иды местами поменял по запарке.

ЮБ>
ЮБ>    hToolBar = CreateToolbarEx(hWnd,
ЮБ>        WS_CHILD | WS_VISIBLE | WS_BORDER | TBSTYLE_TOOLTIPS,
ЮБ>        ID_TOOLBAR, // какое нибудь число ид тулбара
ЮБ>        6, // сколько кнопок в битмапе с кнопками
ЮБ>        hInst,
ЮБ>        TOOLBAR_BMP, // ид картинки с кнопками (широкая такая :))
ЮБ>        (LPCTBBUTTON)&tbButtons, // адрес массива с кнопками
ЮБ>        6,  // сколько кнопок в массиве с кнопками
ЮБ>        32, 32, // Размеры поставь свои любимые - от картинки зависит
ЮБ>        32, 32, // Читай доку
ЮБ>        sizeof(TBBUTTON));

ЮБ>
Re[5]: Нужен пример ToolBarа
От: econt Украина http://cprime.110mb.com
Дата: 21.01.02 07:15
Оценка:
Здравствуйте joawl, Вы писали:

J>А, ну да...

J>В общем-то, почти все заработало. Кроме картинок на кнопках =/

Посмотри мой сайт: http://cprime.hypermart.net
Зайди в раздел Download и посмотри "Главный класс SDI-приложения". Там есть комплексный пример с ToolBar, Menu, StatusBar...
Для всех классов приводятся полные исходные тексты.
Мне никогда не нравилась MFC. (c) Charles Petzold
Re[6]: Нужен пример ToolBarа
От: joawl  
Дата: 21.01.02 09:11
Оценка:
Спастбо за ссылку... теперь есть, что почитать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.