Вызов формы из DLL.

Aleks_U
Дата: 21.11.2007 16:06:06
Задачка на вид совсем простая, а сам вопрос возможно очень глупый. Пишу DLL в которой есть ряд функций типа ShowDialog(HWND wnd, ...), которые должны показывать модальные диалоговые окна. Примерный текст функции вот такой:
const TResult*  TClass::ShowDialog( HWND parent)
{
        TDocSelect* d=new TDocSelect(parent);

        if ( d->ShowModal() == IDOK )
        {
                   //.......
        }
}
В качестве parent передаю дескриптор главной формы программы. Передавать надо именно дескриптор для обеспечения совместимости с предыдущей версией DLL.

После вызова ShowModal программа подвисает, а диалоговое окно так и не появляется. Объясните пожалуйста в чем я не прав и ка сделать правильно.
Johnmen
Дата: 21.11.2007 16:15:35
Aleks_U
Дата: 21.11.2007 16:39:10
Оно то понятно, но умные люди до меня написали DLL, а я в данном случае человек подневольный. Нужна именно DLL причем совместимая со старой, чтобы любая её использующая программа без изменений могла с ней работать. Вот.

Кстати, если сделать вот так, то всё работает.
[SRC с++] TForm* fm=new TForm(parent);
TDocSelect* d=new TDocSelect(fm, this, &D);
[/src]Почему-то нужна вот эта фиктивная форма. Вот только зачем она нужна?????????????
StarWind
Дата: 22.11.2007 03:04:17
что-то я не понял, у вас в двух случаях разное описание конструктора


Johnmen
Насколько я вижу человек и не передает классы в длл.
Aleks_U
Дата: 22.11.2007 10:44:01
Просто разработка на месте не стоит, потому и конструктор поменялся ;) И всё-таки зачем нужна эта фиктивная форма??? Почему без неё не работает???