Как сделать COM DLL, реализующую интерфейс с поддержкой MFC?
От: Alеxandr Россия  
Дата: 05.09.04 22:14
Оценка:
Хочу сдалать Desk Band — это панелька как Паналь быстрого запуска (рядом с Пуском)
В MSDN подробно расписано и пример есть как это сделать (в инете тоже есть примеры, чистая копия из MSDN), но там все без поддержки MFC.

Я сам пробовал сделать:
Сделал MFC DLL визардом, добавил поддержку ATL визардом, добавил класс ATL Simple Object, отнаследовался от всех нужных интерфейсоф. Создал класс окошка CWnd и создаю окно, когда срабатывает функция из интерфейса. Все валится из-за вызова AfxGetInstanceHandle() внутри функции интерфейса.

MFC мне нужен, т.к. надо будет рисовать сложные вещи, с архивами работать и пр (без него никуда, всетаки GUI делаю). На API виндовса, как в примерах далают, мне нафиг не надо, и так сложностей хватает
Re: AFX_MANAGE_STATE
От: Vi2 Удмуртия http://www.adem.ru
Дата: 06.09.04 04:24
Оценка: 3 (1)
Здравствуйте, Alеxandr, Вы писали:

A>Сделал MFC DLL визардом, добавил поддержку ATL визардом, добавил класс ATL Simple Object, отнаследовался от всех нужных интерфейсоф. Создал класс окошка CWnd и создаю окно, когда срабатывает функция из интерфейса. Все валится из-за вызова AfxGetInstanceHandle() внутри функции интерфейса.


У меня в такие интерфейсные функции Визард добавлял AFX_MANAGE_STATE.

STDMETHODIMP CComment::get_Content( /*[out, retval]*/ BSTR *pVal )
    {
        AFX_MANAGE_STATE(AfxGetStaticModuleState())
...
    }
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[2]: AFX_MANAGE_STATE
От: Alеxandr Россия  
Дата: 06.09.04 17:49
Оценка:
Здравствуйте, Vi2, Вы писали:

Vi2>У меня в такие интерфейсные функции Визард добавлял AFX_MANAGE_STATE.


Vi2>
Vi2>STDMETHODIMP CComment::get_Content( /*[out, retval]*/ BSTR *pVal )
Vi2>    {
Vi2>        AFX_MANAGE_STATE(AfxGetStaticModuleState())
Vi2>...
Vi2>    }
Vi2>


Ура, наконец то. теперь заработало.
А вообще я видел кучу примеров как это делать в VC6.0 и не одного в VC7, как правильно сделать простую MFC DLL-ку, реализующую инрефейс. (да и без всяких там нафиг не нужных Type Library )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.