Положил на форму в MS Visual C++ 6.0 ActiveX компонент Microsoft Toolbar Control ver.6 и никак не могу отловить сообщение от конкретной нажатой кнопки на панели. Какое событие использовать и какой метод для этого использовать. Как вообще это сделать?
И еще. Как подключить к этому компоненту ImageList Control ???
Заранее благодарен за ответ!
Здравствуйте Obsolete, Вы писали:
O>Положил на форму в MS Visual C++ 6.0 ActiveX компонент Microsoft Toolbar Control ver.6 и никак не могу отловить сообщение от конкретной нажатой кнопки на панели. Какое событие использовать и какой метод для этого использовать. Как вообще это сделать?
В редакторе ресурсов жмёшь на тулбаре: Правый мышь->Events->Дважды ButtonClick->задаёшь имя функции обработчика. В обработчик передаётся LPDISPATCH — это интерфейс MSComctlLib::IButton. Преобразуешь этот диспатч к этому интерфейсу и определяешь нажатую кнопку по её имени:
void CFormTemp::OnButtonClickToolbar (LPDISPATCH Button)
{
try {
MSComctlLib::IButtonPtr btn(Button);
if (btn->Key == _bstr_t(L"FirstBtn")) {
// ...
} else if (btn->Key == _bstr_t(L"NextBtn")) {
// ...
} else ...
} catch (_com_error& e) {
...
}
}
O>И еще. Как подключить к этому компоненту ImageList Control ???
Ложишь его на туже форму, в OnInitialUpdate пишешь:
try {
m_tbr->ImageList = m_img;
m_tbr->Buttons->Item[&_variant_t(1)]->Image = L"First";
m_tbr->Buttons->Item[&_variant_t(2)]->Image = L"Next";
} catch (_com_error& er) {
// ...
}
Здесь я привожу примеры не для стандартных оберток, генерируемых MFC, а обёрток директивы #import, полученных способом, описанным в
http://www.rsdn.ru/?article/?vcpp/import.xmlАвтор(ы): Игорь Ткачёв
Дата: 9.03.2001
В данной статье приводится объяснение работы директивы #import
компилятора Visual C++ и даны примеры её использования с
MS Word, MS Excel, ADO DB и ActiveX Control.
.
Здравствуйте IT, Вы писали:
O>>И еще. Как подключить к этому компоненту ImageList Control ???
IT>Ложишь его на туже форму, в OnInitialUpdate пишешь:
IT>IT>try {
IT> m_tbr->ImageList = m_img;
IT> m_tbr->Buttons->Item[&_variant_t(1)]->Image = L"First";
IT> m_tbr->Buttons->Item[&_variant_t(2)]->Image = L"Next";
IT>} catch (_com_error& er) {
IT> // ...
IT>}
IT>
Во-во, а в VB работает установка проперти ImageList...
Может, кто прояснит:
http://rsdn.ru/forum/?action=message&gid=4&mid=8514&ubb=1Автор: retalik
Дата: 10.10.01
Здравствуйте IT.
Большое спасибо за ответ! Все заработало, кроме одного :(. Не подключается ImageList Control к Toolbar Control. Не мог бы ты объяснить, если не трудно, для ImageList тоже необходимо делать обертку при помощи директивы #import?
Когда я пишу строку:
m_tbr->Buttons->Item[&_variant_t(1)]->Image = L"First"
то выдает ошибку про "&_variant_t(1)" или или в раскрывающимся списке отсутствует "->Image".
Как быть?
Здравствуйте Obsolete, Вы писали:
O>Большое спасибо за ответ! Все заработало, кроме одного :(. Не подключается ImageList Control к Toolbar Control. Не мог бы ты объяснить, если не трудно, для ImageList тоже необходимо делать обертку при помощи директивы #import?
O>Когда я пишу строку:
O> m_tbr->Buttons->Item[&_variant_t(1)]->Image = L"First"
O>то выдает ошибку про "&_variant_t(1)" или или в раскрывающимся списке отсутствует "->Image".
O>Как быть?
Надо писать не '1', а '1l'. В статье об этом упоминается.
Здесь —
http://www.rsdn.ru/qna/ui/axctrl/axctrl.zip рабочий пример, может быть по позже сделаем из него Q&A.
Здравствуйте IT.
Большое спасибо за ответ! Все получилось, кроме одного — никак не могу подключить ImageList к Toolbar. Не совсем понял — для ImageList тоже нужно генерировать обертку при помощи директивы #import ?
Когда пишу строку:
m_tbr->Buttons->Item[&_variant_t(1)]->Image = L"First";
то выдает ошибку что то про "&_variant_t(1)" или нету в выпадающем списке после "->" свойства "Image". Что может быть сдесь не так? Объясни пожалуйста, если не трудно.