Тема: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

Возможно ли назначить иконки кнопкам toolbar'a программно без использования меню/интерфейс-файлов?

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

> equilibrium
Объясни толком что тебе нужно. Какой toolbar (стандартный AutoCAD'овский или стандартный Windows'овский)? И вообще что ты пытаешься сделать? Краткость - сестра таланта. Но к сожалению ты в своей краткости переборщил. Так что не поленись - напиши что ты имеешь (код), чего хочешь добиться и т.д.

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

Простите, задумался.
Toolbar собственный, по примеру "ObjectARX 2006\samples\entity\polysamp\polymnu.cpp".
Картинки для кнопок хочу грузить из dll, не используя дополнительные файлы вроде mnu, mns, cui. Возможно ли это?
Подскажите, пожалуйста, так же пример, как поместив некоторыми ресурсы в arx-файл (с этим проблем нет) с командами, (которые используют данные ресурсы,) загрузить ресурсы из данного же arx-файла. Сейчас я загружаю их из дополнительной ресурсной dll.

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

equilibrium  наверное пишет вот о чем. Он хочет, чтобы в меню было записано не типа

ID_Line      [_Button("Отрезок", RCDATA_16_LINE, RCDATA_16_LINE)]^C^C_line

а типа

ID_Line      [_Button("Отрезок"]^C^C_line

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

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(...));

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

> equilibrium
Теперь все ясно. Я так понимаю, что ты хочешь минимизировать количество файлов. Я прав? Так сделать нельзя. Но могу предложить вариант хранить картинки в ресурсах, а перед созданием меню вытаскивать их оттуда и сохранять в виде bmp-файлов, если их там нет.

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

Александр Ривилис пишет:

...а перед созданием меню...

Я имел в виду перед созданием toolbar'а

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

Понял, Александр. Спасибо.

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

А чем не устраивает вариант с *.cui файлом? К этому файлу можно добавить *.dll файл с ресурсами, как и говорил Александр, и при указании идентификатора ресурса автоматически будет подгружаться рисунок.

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

Один черт, что в MNU, что в CUI надо указывать имена пиктограмм в файле DLL или имена файлов BMP, находящихся на пути доступа AutoCAD к файлам поддержки. Из этих пиктограмм потом формируется файл MNR.

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

Ну и в чем отличие от указания того же самого имени файла, но уже в загрузочном dll? Тем более, что в dll имена пиктограмм/файлов будет hardcode, а в cui файле можно будет поменять их в любом текстовом редакторе или в самом AutoCAD'е.

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

Не знаю, о каком отличии вы пишете. Просто представляется мне, что независмо от источника пиктограмм их все равно надо описывать в MNU или CUI. А автор темы, как мне показалось, не хочет их описывать в меню. Но, возможно, он вообще не хочет использовать меню ни для каких целей...

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

> Владимир Громов
>А автор темы, как мне показалось, не хочет их описывать в меню.
Это так. И с этим вопросом все ясно.
У меня есть следующий .. возможно и стоит его задать в отдельной ветке, но в более общей форме он был уже задан: В arx-файле есть ресурс - String Table. Как данному arx-приложению доступиться к строкам из таблицы?

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

> equilibrium
А что религия не позволяет использовать FindResource/FindResourceEx/LoadString и другие функции работы с ресурсами? smile

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

> Александр Ривилис
smile
Действительно.
Если кому-нибудь будет скучно - подскажите, пожалуйста, как получить HINSTANCE приложения, не создавая объект унаследованного от AcRxArxApp класса, т.о. не вызывая методы GetInstance, GetMoguleInstance, не обращаясь к переменной m_hdllInstance.
Спасибо.

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

> equilibrium
А еще чем пользоваться нельзя? biggrin
Ну например в DllMain передается hInstance, который ты можешь сохранить и использовать.

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

> Александр Ривилис
Понял, спасибо (: Подойдет.

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

А почему :( ?

Re: Назначить bmp из dll кнопке без использования *.mnu, *.mns, *.cui файлов.

> Александр Ривилис
мм.. это веселый смайлик.. только в другую сторону )
(-:
(;
А грустный в другую сторону - вот так:
):
)-:
)`;
smile
P.S. Простите за offtop.