Тема: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

Здравствуйте!

Подскажите,
1. как можно программно вызвать диалог "Выбор цвета"?
2. можно ли сделать "Combo Box" с выбором цвета без позиций "ПоСлою", "ПоБлоку"? (если да, то как?)

с уважением, Сергей

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

Сергей Палюхин пишет:

1. как можно программно вызвать диалог "Выбор цвета"?

На выбор функции:

acedSetColorDialog
acedSetColorDialogTrueColor
acedSetColorDialogTrueColorWithCallback
Сергей Палюхин пишет:

2. можно ли сделать "Combo Box" с выбором цвета без позиций "ПоСлою", "ПоБлоку"? (если да, то как?)

Если используешь MFC Extension Classes, то CAcUiColorComboBox или CAcUiTrueColorComboBox

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

с 1 разобрался! спасибо..
а 2, можно поподробнее?! я создаю диалог CAcUiDialog, помещаю на нем объект ComboBox, а потом инициализирую его с помощью методов класса CAcUiColorComboBox? если можно, примерчик

с уважением)

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

Здесь есть пример: http://www.theswamp.org/index.php?topic … #msg400332 (требуется регистрация).

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

ok, буду разбираться..
а подскажите еще аналог функции acedSetColorDialog только для диалога "Вес линий" (LineWeight Dialog)

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

Для этого есть недокументированная функция acedLineWeightDialog. Добавь это объявление в свой код:

bool __cdecl acedLineWeightDialog(enum AcDb::LineWeight,bool,enum AcDb::LineWeight &);

и можешь пользоваться.

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

ух ты!! спасибо!)
а сколько еще их недокументированных?) можно ли их где посмотреть?

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

Сергей Палюхин пишет:

а сколько еще их недокументированных?)

Много.

Сергей Палюхин пишет:

можно ли их где посмотреть?

Если учесть, что AutoCAD это обычное Windows-приложение, то никто не мешает воспользоваться утилитой dumpbin.exe (с ключом /EXPORTS) из комплекта MS Visual Studio для анализа acad.exe и dll/arx/dbx-файлов из комплекта AutoCAD и получить этот заветный список. Для того чтобы получить нормальное имя функций и методов C++ еще придется воспользоваться утилитой undname.exe из комплекта MS VS.

(изменено: Сергей Палюхин, 15 ноября 2010г. 22:43:48)

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

так и не нашел решение своего вопроса..((
может все-таки кто-нибудь делал низпадающие списки (comboBox) выбора цвета, веса линий?
помогите примером!!
интересует полностью схема создания таких списков по пунктам. я так понимаю, что это не стандартный список, так как в нем отображается, помимо текста, картинка.. т.е получается список полностью создается программно? или как?

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

Здесь для типов линий с исходным кодом: http://www.theswamp.org/index.php?topic … #msg387865
Для веса линий аналогично с использованием функции:

void __cdecl DrawLWLine(class CDC *,enum AcDb::LineWeight,struct tagRECT *,int);

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

я немогу понять как добавлять нестандартный список в свой диалог!? программирование этого списка это немного позже) хотябы разобрать как вообще список создать.. по предложенному примеру я вижу готовый диалог(как он сделан мне и неизвестно) и код(с кодом разберемся)
допустим я хочу сделать диалог с настройкой веса линий и их цвета.., хочу сделать выбор веса и цвета как в акаде делается, т.е. выпадающий список. делаю следующее, захожу в Autodesk Class Explorer - Add an ObjectARX MFC Ext. Class... - заполняю формы class name: nameDlg; base class: CAcUiDialog далее Finish. в итоге получаю стандартное пустое диалоговое окно с кнопками ок и cancel теперь, как добавить акадовский выпадающий список (как я понял он в стандартном окне VC++ Toolbox отсутствует) откуда и как его вытащить?

с уважением, Сергей

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

Сергей Палюхин пишет:

как добавить акадовский выпадающий список (как я понял он в стандартном окне VC++ Toolbox отсутствует)

Никак его добавлять не нужно. Выбираешь ComboBox. Потом заменишь CComboBox на CAcUiColorComboBox. Все остальное делаешь по аналогии с существующими примерами ручками без всяких визардов.

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

Потом заменишь CComboBox на CAcUiColorComboBox.

так в этом-то и вопрос:) как заменить обычный/стандартный VC++ объект на акадовский?

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

При редактировании диалога вставляешь стандартный объект ComboBox. Назначаешь ему переменную типа CComboBox.
Потом заменяешь в соответствующих .h и .cpp файлах строку CComboBox на CAcUiColorComboBox. Так понятнее?

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

ах вон оно что!? спасибо, так гораздо понятнее:)

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

Для того чтобы это все делать нужно хорошо знать MFC, разобрать готовые примеры...

Re: Программный вызов диалога "Выбор цвета" (Select color Dialog box)

Здравствуйте.

Я наконец разобрался.) пишу для тех, кто столкнется с подобным вопросом(создание ColorComboBox)
Все делается элементарно! даже обидно, что пришлось потратить так много времени(собственно на редактирование списка).

1. Создаем обычный/стандартный ComboBox
2. Создаем управляющую переменную(на ComboBox), заменив тип CComboBox на CAcUiColorComboBox
3. Вот и все!)

конструктор заполнит, созданный ComboBox стандартным набором цветов. для дальнейшей работы со списком есть куча методов, которые подробно описаны в хелпе(. .\docs\).
возился, собственно, с тем, чтобы удалить из построенного списка пункты ПоСлою и ПоБлоку, делается это следующим образом:

1. имя_управляющейПеременной.SetUseByBlock(FALSE);
   имя_управляющейПеременной.SetUseByLayer(FALSE);
   имя_управляющейПеременной.AddItems;
2. Все!)

спасибо всем.

с уважением, Сергей