Тема: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.
Возможно ли назначить иконки кнопкам toolbar'a программно без использования меню/интерфейс-файлов?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Возможно ли назначить иконки кнопкам toolbar'a программно без использования меню/интерфейс-файлов?
> equilibrium
Объясни толком что тебе нужно. Какой toolbar (стандартный AutoCAD'овский или стандартный Windows'овский)? И вообще что ты пытаешься сделать? Краткость - сестра таланта. Но к сожалению ты в своей краткости переборщил. Так что не поленись - напиши что ты имеешь (код), чего хочешь добиться и т.д.
Простите, задумался.
Toolbar собственный, по примеру "ObjectARX 2006\samples\entity\polysamp\polymnu.cpp".
Картинки для кнопок хочу грузить из dll, не используя дополнительные файлы вроде mnu, mns, cui. Возможно ли это?
Подскажите, пожалуйста, так же пример, как поместив некоторыми ресурсы в arx-файл (с этим проблем нет) с командами, (которые используют данные ресурсы,) загрузить ресурсы из данного же arx-файла. Сейчас я загружаю их из дополнительной ресурсной dll.
equilibrium наверное пишет вот о чем. Он хочет, чтобы в меню было записано не типа
ID_Line [_Button("Отрезок", RCDATA_16_LINE, RCDATA_16_LINE)]^C^C_line
а типа
ID_Line [_Button("Отрезок"]^C^C_line
equilibrium пишет о том, чтобы в коде функции, создающей toolbar, было записано не типа
hr = tlbr->AddToolbarButton(index, getResource(2004 /*IDS_CONNECT*/), SysAllocString(L"Connect to server"), SysAllocString(L"\x1B\x1B_login "), vtFalse, &button); hr = button->SetBitmaps(CComBSTR(csPath + "connect_lg.bmp"),CComBSTR(csPath + "connect_sm.bmp"));
а типа
HINSTANCE hLib = AfxLoadLangResourceDLL(csPath + "SomeDLL.dll"); AfxSetResourceHandle(hLib); hr = tlbr->AddToolbarButton(index, getResource(2004 /*IDS_CONNECT*/), SysAllocString(L"Connect to server"), SysAllocString(L"\x1B\x1B_login "), vtFalse, &button); hr = button->SomeMethodSetBitMap(AfxLoadSysColorBitmap(...));
> equilibrium
Теперь все ясно. Я так понимаю, что ты хочешь минимизировать количество файлов. Я прав? Так сделать нельзя. Но могу предложить вариант хранить картинки в ресурсах, а перед созданием меню вытаскивать их оттуда и сохранять в виде bmp-файлов, если их там нет.
...а перед созданием меню...
Я имел в виду перед созданием toolbar'а
Понял, Александр. Спасибо.
А чем не устраивает вариант с *.cui файлом? К этому файлу можно добавить *.dll файл с ресурсами, как и говорил Александр, и при указании идентификатора ресурса автоматически будет подгружаться рисунок.
Один черт, что в MNU, что в CUI надо указывать имена пиктограмм в файле DLL или имена файлов BMP, находящихся на пути доступа AutoCAD к файлам поддержки. Из этих пиктограмм потом формируется файл MNR.
Ну и в чем отличие от указания того же самого имени файла, но уже в загрузочном dll? Тем более, что в dll имена пиктограмм/файлов будет hardcode, а в cui файле можно будет поменять их в любом текстовом редакторе или в самом AutoCAD'е.
Не знаю, о каком отличии вы пишете. Просто представляется мне, что независмо от источника пиктограмм их все равно надо описывать в MNU или CUI. А автор темы, как мне показалось, не хочет их описывать в меню. Но, возможно, он вообще не хочет использовать меню ни для каких целей...
> Владимир Громов
>А автор темы, как мне показалось, не хочет их описывать в меню.
Это так. И с этим вопросом все ясно.
У меня есть следующий .. возможно и стоит его задать в отдельной ветке, но в более общей форме он был уже задан: В arx-файле есть ресурс - String Table. Как данному arx-приложению доступиться к строкам из таблицы?
> equilibrium
А что религия не позволяет использовать FindResource/FindResourceEx/LoadString и другие функции работы с ресурсами?
> Александр Ривилис
Действительно.
Если кому-нибудь будет скучно - подскажите, пожалуйста, как получить HINSTANCE приложения, не создавая объект унаследованного от AcRxArxApp класса, т.о. не вызывая методы GetInstance, GetMoguleInstance, не обращаясь к переменной m_hdllInstance.
Спасибо.
> equilibrium
А еще чем пользоваться нельзя?
Ну например в DllMain передается hInstance, который ты можешь сохранить и использовать.
> Александр Ривилис
Понял, спасибо (: Подойдет.
А почему :( ?
> Александр Ривилис
мм.. это веселый смайлик.. только в другую сторону )
(-:
(;
А грустный в другую сторону - вот так:
):
)-:
)`;
P.S. Простите за offtop.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.
Форум работает на PunBB, при поддержке Informer Technologies, Inc