Re: DX: После вызова окна из DLL - прячется основная форма п
От: StlGroup  
Дата: 11.08.03 19:57
Оценка: 18 (2)
Здорово
Значит так,
1) При вызове формы из DLL надо передать указатель на родительское окно..
Пример:
EXE
   ShowDllForm(HApp : THandle; HOwner : THandle) ; stdcall ;

DLL
где то там в Dll объявлена форма
   TDllForm = class(TForm)
   ........
   var
      SaveAppHandle : THandle ;      
      DllForm : TDllForm ; // <- Объект форма (или перменная)

   procedure ShowDllForm(HApp : THandle; HOwner : THandle) ; stdcall ;
   begin
        // Сохранить указатель на Application
        SaveAppHandle := Application.Handle ;
        // Назначить новый указатель для Application        
        Application.Handle := HApp ; 
        try
           DllForm := TDllForm.Create(Application) ;
//      или
           DllForm := TDllForm.CreateParent(HOwner) ;
           try
              with DllForm do
              begin
                   ParentWindow := HOwner ; 
                   // Назначаем владельца
                   
                   ShowModal ; // Выводим окно
              end ;
           finally
              DllForm.Free; // Особождем память
              Application.Handle := SaveAppHandle ;  
              // Востанавливаем указатель  
           end ; 
        except
           // обработчик ошибок
           on E:Exception do 
              MessageBox(HOwner,'Ошибка','Ошибка',MB_OK) ;
        end ;
   end ;

2) после этого должна появляться прямо в основном окне приложения в которое ты загружаешь DLL а не на панели задач..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.