Что-то корявый у меня тулбар получился... без примера нормальной реализации не могу понять, в чем ошибки. Если есть у кого либо кусок кода, который работает, выложите здесь, пожалуйста :).
Здравствуйте 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);
}
Вроде так...
Саша.
Эхх... mfc — хорошо, но нельзя ли то же самое, но на API?
Здравствуйте joawl,
Сам ищу, нашел на Builder как мне нужно, но он с ошибками может поможет.
http://leunen.com/cbuilder/appbarsrc.zip
Здравствуйте 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 — так что все остальные параметры останутся.
Саша.
А, ну да...
В общем-то, почти все заработало. Кроме картинок на кнопках =/ Объясните, пожалуйста, что передается в параметрах HINSTANCE hBMInst и UINT_PTR wBMID, а то я методом тыка получил не свои битмапы, а мусор :)
Здравствуйте 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));
Удачи Булат
Здравствуйте Юнусов Булат, Вы писали:
Вчера иды местами поменял по запарке.
ЮБ>ЮБ> 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));
ЮБ>
Здравствуйте joawl, Вы писали:
J>А, ну да...
J>В общем-то, почти все заработало. Кроме картинок на кнопках =/
Посмотри мой сайт:
http://cprime.hypermart.net
Зайди в раздел Download и посмотри "Главный класс SDI-приложения". Там есть комплексный пример с ToolBar, Menu, StatusBar...
Для всех классов приводятся полные исходные тексты.
Мне никогда не нравилась MFC. (c) Charles Petzold
Спастбо за ссылку... теперь есть, что почитать.