Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
ВнизOle объект Найти похожие ветки
← →
Murad (2003-09-23 12:28) [0]Есть собственный Ole обьект, который умеет встраиваться в другие приложения (Объект реализован как LocalServer),
но при встраивании, он только добавляет свое меню и отрисовывается в ректе, что нужно сделать (какие-то интерфейсы реализовать или еще что-то), чтобы можно, было поддержать пользовательский интерфейс в нем (кнопки, закладки и т.п) ?
Если не знаете ответа, то может знаете где об этом почитать...
← →
Юрий Федоров (2003-09-23 12:32) [1]Реализуй как InProc сервер )))
← →
Murad (2003-09-23 12:35) [2]2Юрий Федоров
Для человека сидящего от меня в 2-х метрах, ты выбрал, не самый оптимальный способ общения :)))
← →
Murad (2003-09-23 12:36) [3]нужны решения именно для LocalServer...
← →
Murad (2003-09-23 13:58) [4]Кстати, вопрос к организаторам сайта, почему нет форума
(COM\OLE\ActiveX) или что-то в этом роде?
← →
me (2003-09-23 14:05) [5]Можно встраивать в тулбар хост-приложения кнопки из таких plug-in-ов.
Нами используется этот вариант, а также встраивание секций в компоненты типа TOutlookBar. Достаточно просто и удобно.
← →
Murad (2003-09-23 14:12) [6]2me
1. Мне нужно, чтобы поддерживались собственные кнопки (на моем объекте) а не в хост-приложении
2. Как кнопки встраиваете в тулбар - "в лоб" ?
3. Что за компонент TOutlookBar?
← →
me (2003-09-23 16:37) [7]1. для этого не нужно ничего особенного - показывай свои окна со своими контролами и пр.
2. plug-in сообщает хосту количество реализуемых им функций, хост по очереди просить для каждой из них некое строковое описание-дескриптор функции, имя ресурса-битмапы для кнопки, порядковый номер функции для обеспечения вызова, затем динамически создает новую кнопку и ассоциированный объект TAction и "вешает" их на общий обработчик - метод интерфейса plug-in
3. то, что отображается слева в окне MS Outlook в режиме View\Outlook Bar
← →
Murad (2003-09-23 17:04) [8]2Me
>показывай свои окна со своими контролами и пр.
Блин. как "показывай"???? метод какого интерфейса за это
отвечает?
Метод IDataObject.GetData предает хосту метафайл с рисованием
себя...
Методы интерфейса IOleInPlaceObject отвечают за встраивание
убирание меню. У меня есть подозрение, что именно через этот
интерфейс надо встраивать и элементы пользовательского
интерфейса...
ДЛЯ СПРАВКИ
у меня сейчас есть LocalServer,
в котором реализованы
IOleObject,
IDataObject,
IPersistStorage,
IOleInPlaceActiveObject,
IOleInPlaceObject
← →
Murad (2003-09-23 19:19) [9]up
← →
nikkie (2003-09-23 19:37) [10]я что-то ничего не пойму...
совсем руками, что ли activeX делаешь? неблагодарное это дело...
может стоит посмотреть, что и как TActiveXControl делает?
про "поддержать пользовательский интерфейс" непонятно. кнопки-едиты и т.п.? создать их надо. а для этого нужно от хоста получить hwnd парента. если я правильно понимаю через IOleInPlaceSite/IOleWindow::GetWindow его получить можно.
← →
Murad (2003-09-24 10:39) [11]2nikkie
ActiveX и Ole-объект - вещи разные
А т.к. сервер - LocalServer, то нельзя нашему контролу выставить в качестве парента IOleWindow::GetWindow, т.к. они в разных процессах :(((
← →
nikkie (2003-09-24 13:29) [12]>ActiveX и Ole-объект - вещи разные
можешь четко термины определить? а еще в MSDN используется термин ActiveX Document - это что?
>А т.к. сервер - LocalServer, то нельзя нашему контролу выставить в качестве парента IOleWindow::GetWindow, т.к. они в разных процессах :(((
а кто запрещает? ты попробовал? не знаю, позволит ли это VCL, но создать кнопку на окне другого процесса возможно.
← →
Murad (2003-09-24 14:11) [13]2nikkie
> можешь четко термины определить? а еще ...
На сколько я знаю - Active Document, а не ActiveX Document.
Но это не суть. Active Document - новая альтернативная
технология, заменяющая OLE...
ActiveX - может быть только InProc, а Ole еще может быть и
Local Server.
>а кто запрещает? ты попробовал? не знаю...
Пробовал и не только я... давече даже похожая ветка была и
там многие подтвердили, что нельзя.
>создать кнопку на окне другого процесса возможно.
Инициировать создание может и возможно, а свою вставить нельзя..
← →
nikkie (2003-09-24 15:02) [14]>На сколько я знаю - Active Document, а не ActiveX Document.
сделал поиск - есть несколько статей, где даже в заголовке используется сочетание ActiveX Document.
>Active Document - новая альтернативная технология, заменяющая OLE...
ну не знаю, первый раз такое слышу. я как-то думал, что это одно и тоже.
"ActiveX documents, also known as OLE Document Objects or doc objects..."
Joshua Trupin, "The Visual Programmer Puts ActiveX Document Objects Through Their Paces" - статья 1996 года
но я к чему заговорил про ActiveX. хорошо я в этом хозяйстве не разбираюсь, но, имхо, технологии OLE и ActiveX - родные братья. используемые интерфейсы и механизмы практически одинаковы. значит можно посмотреть, как ActiveX строит свой UI?
конечно, лучше бы это в книжке прочитать, если есть...
>Пробовал и не только я... давече даже похожая ветка была и там многие подтвердили, что нельзя.
не видел я этой ветки. только что проверил - прекрасно создается. мораль - большинством голосов такие вопросы не решаются :)
← →
Murad (2003-09-24 16:08) [15]2nikkie
Насчет терминов - они там намудрили... это уж точно.
Насчет создания кнопок, покажи как ты это сделал...
← →
nikkie (2003-09-24 16:36) [16]
var
h: HWND;
begin
h := FindWindow(nil, "Calculator");
h := CreateWindow("BUTTON", "yes!", WS_CHILD, 0, 0, 75, 21, h, 0, 0, 0);
ShowWindow(h, SW_SHOW);
end;
← →
nikkie (2003-09-24 16:37) [17]и UpdateWindow(h); еще добавить
← →
Murad (2003-09-25 10:38) [18]Тогда уж и оконную процедуру надо передавать, а то зачем нам мертвая кнопка... Но правотоу твою в этом вопросе признаю, не работает видимо из-за VCL
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c