Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
9-18215
Barlok
2003-03-26 14:37
2003.10.06
Вопрос по OpenGL. Помогите если знаете или сайты подскажите.


1-18320
LordBTR
2003-09-23 11:45
2003.10.06
Русификация приложений


14-18558
Ashtray
2003-09-18 17:58
2003.10.06
СУБД Cache


6-18498
oduvan
2003-08-10 15:49
2003.10.06
Как определить кол-во писем на сервере не используя компоненты


8-18482
DKSoft
2003-06-07 08:49
2003.10.06
Трехмерность





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский