Тема: ActiveX control в OPM

Свойства созданы, одному из свойств присвоен CLSID контрола (ellipse button) - из стандартной библиотеки, по нажатию вызывается диалог выбора "Hatch pattern dialog". Все нормально, кроме одного... Каким образом мне передать из интерфейса, в котором прописан вызов диалогового окна, прописанного там свойства (BCHAR к примеру)? Как ни крутил, ничего не выходит.
===========================================================
И вопрос на засыпку :) При запуске моего приложения из VisualStudio сразу после запуска оболочки AutoCAD, срабатывает непонятный брейк (Unhandled exception at 0x7a012aa0 in acad.exe: User breakpoint). Жму Continue, программа дальше работает... вроде нормально. Что это, и как бороться?
===========================================================
Заранее большое спасибо!

Re: ActiveX control в OPM

Сандрик пишет:

И вопрос на засыпку :)

Это тонкость, связанная с защитой AutoCAD. Ты не запускай AutoCAD из под VS, а запускай его вручную и присоединяйся к процессу acad.exe

Re: ActiveX control в OPM

Отвечу на первую часть вопроса, если я правильно его понял. Помоему он больше по програмированию, чем по ARX, но тоже интересный.
В начало функции нужно вставить USES_CONVERSION;
А потом перегнать из BCHAR в строковый тип.
Ну, например, так:

void функция()
{
  USES_CONVERSION;
  std::string str;
  BSTR bstr; // в моем примере BSTR, но принципиальной разницы вроде нет
  ...
  ...
  GetString(&bstr); параметр функции в данном случае (BSTR * bstr)
  str = W2A(bstr); // теперь все лежит в str
  ....
}

Вот и дальше с str можно делать что угодно
С чаром принцип такой же.

Re: ActiveX control в OPM

> Николай
Спасибо, тоже нужно. Но проблема немного в другом. Я несколько неверно сформулировал вопрос. Есть в проекте совершенно отдельный интерфейс, в котором прописан вызов диалогового окна выбора типа штриховки (acedHatchPalletteDialog) (он приписывается в свойства объекта, созданного мной), так как я очень плохо знаком с технологией COM, я не могу никак разобраться, каким образом, после отработки самого диалога выплюнуть из интерфейса в объект, который его вызвал, строчку с названием штриховки. Или наоборот, после отработки интерфейса вызова диалога вытащить из него этот самый параметр, "находясь" в пространстве классе объекта.

Re: ActiveX control в OPM

Если я правильно понял, то в каком-то места кода идет вызов этой функции:

bool __cdecl acedHatchPalletteDialog(...)

Так а в чем проблема.
Передаешь в нее все че она просит, потом после выполнения делаешь те махинации, которые я написал выше и в принципе все. Там кажется в BSTR или BCHAR* передается имя выбранного типа штриховки. Но увидеть его можно только после преобразования в строку. Где-то так :)