Как вывести модальный диалог из ATL модуля
От: Dwarf Россия dwarf.h1.ru
Дата: 09.07.01 22:57
Оценка:
Есть класс

class CHTMLDowloader :
public IDispatchImpl<IHTMLDowloader, &IID_IHTMLDowloader, LIBID_URLDOWNLOADERLib>,
{
public
STDMETHOD(ShowModal)(); // exposed method
};

В cpp:

STDMETHODIMP CHTMLDowloader::ShowModal()
{
CProgress p;// определен как class CProgress : public CAxDialogImpl<CProgress>
int r = p.DoModal(NULL);
DWORD e = GetLastError();
return S_OK;
}

При обращении к ShowModal извне, DoModal возвратит -1. Диалог показался только при обращении из бейсика и *только* под отладчиком, из самостоятельного exe ничего не появляется. Также ничего нет и из любого другого клиента, всегда -1. Пользовать MFC нет резона, может Windos глюкает (ME Edition)?
Народу не нужны нездоровые сенсации. Народу нужны здоровые сенсации! (с) Стругацкие.
Re: Как вывести модальный диалог из ATL модуля
От: Блудов Павел Васильевич Россия  
Дата: 21.08.01 00:40
Оценка:
Здравствуйте Dwarf, вы писали:

D>При обращении к ShowModal извне, DoModal возвратит -1. Диалог показался только при обращении из бейсика и *только* под отладчиком, из самостоятельного exe ничего не появляется. Также ничего нет и из любого другого клиента, всегда -1. Пользовать MFC нет резона, может Windos глюкает (ME Edition)?


Если у тебя в этом диалоге есть ActiveX'ы, то это бага ATL 3.0: пройдись по шагам сам все увидишь. Проблема там с _Module.GetResourceInstance().
В ATL 7.0 поправили, можешь просто выдрать от-туда все сопутствующие куски.

Павел.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.