EXE-сервер с GUI
От: chum Россия  
Дата: 16.01.02 12:57
Оценка:
Есть необходимость написать EXE-сервер автоматизации с GUI.
При этом необходимо реализовать следующие особенности:
1. Сам сервер реализовать на ATL
2. GUI сервера реализовать в отдельном компоненте (для которого сам сервер является клиентом) на ATL, VB, MFC или чем-то еще и может, в принципе, выбираться сервером из нескольких компонентов, например категории SomeGUICat
3. Сервер должен иметь возможность обновлять ("перерисовывать" GUI), а GUI может вызывать методы сервера
4. Сервер может просто запускаться и функционировать как обычная программа (без COM-клиента сервера)
5. Сервер, по желанию клиента, может вообще не отображать свой GUI

Общая идея создания GUI-компонента такова:

Server::Run(BOOL fGUI)
{
...

if(fGUI)
{
GUI pGUI = NULL;

hresult = CreateInstance(..., &pGUI);

pGUI->Show(this); // to get GUI possibility to call the server

}

...
}

При этом возникают некоторые вопросы:
1. Как организоватьвзаимосвязь между сервером и GUI, когда они одновременно являются серверами и клиентами друг друга?
2. Как, например, реализовать GUI на VB? Простая тестовая программа показывает, что при такой конфигурации VB не может создать немодальное окно приложения, а модальное окно приведет к deadlock'у сервера.
3. Как инициализировать сервер, если он запущен как обычное приложени? Иными словами, если сервер имеет какой-то головной объект (скажем Application), то как и где его при этом создавать и удалять?

Если у кого-либо есть соображения по этим вопросом, буду очень признателен, если вы выскажетесь!
Если есть возможность отдать человеку все, не прося ничего взамен — отдай. Если тебе один раз из десяти долг отдадут — будешь богатым.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.