imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 14.06.2003, 19:53     # 1
rfinfy
Newbie
 
Регистрация: 23.05.2003
Адрес: Russia
Сообщения: 45

rfinfy Известность не заставит себя ждать
Question Создание окна в DLL и его последующее уничтожение... (VC++)

Всем приветы...
Проблемка следующая:
При загрузке DLL (DLL_PROCESS_ATTACH) создаю окошко, предварительно проинициализировав данные окна и зарегистрировав его...
А вот как при выгрузке DLL (DLL_PROCESS_DETACH) корректно уничтожить энто окно??

Шо сделал -
Первое что пришло на ум, если есть CreateWindow, то имеется и DestroyWindow... что было правдой
И здесь возникли вопросы -
DestroyWindow - The function sends WM_DESTROY... (MSDN)
Но у меня нет цикла обработки сообщений, хотя присутствует WndProc, которая выполняет след. код :

switch(msg) {
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, msg, wParam, lParam);
} // switch

И здесь интересная ситуация с PostQuitMessage
The PostQuitMessage function indicates to the system that a thread has made a request to terminate (quit). ...
А что здесь понимать под thread?...
PostQuitMessage вставляет сообщение в очередь сообщений для приложения(thread?)...
НО, в ходе дальнейших раскопок MSDN обнаружил, что DLL не имеют очередь сообщений )
[/I]
However, if the intent is to have the DLL own the message queue, this is not possible. The reason is that DLLs, being taskless entities, are designed to be resources or to only provide resources and functions; they are not capable of handling the message processing. This functionality must be implemented in an application.
[/I]
Здесь я окончательно запутался...
Так можно ли создавать в DLL окна, если можно, то как их потом уничтожать ??? (или не уничтожать ) )

Все эти вопросы возникли после попытки выгрузить DLL, после чего приложение плевалось плохими словами, типа ACCESS VIOLATION ... блям, блям...

P.S.
Ах да, созданную в VC++ DLL-ку загружал в приложении на Delphi...
__________________
Способность драться доказывает твое право на жизнь...
rfinfy вне форума  
Старый 15.06.2003, 10:19     # 2
alexey_ma
Member
 
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245

alexey_ma Нимб уже пробиваетсяalexey_ma Нимб уже пробивается
Окна можно создавать в DLL. Пример тому все стандартные диалоги - открытия файла, print-диалог, диалог выбора директории и т. п. А делаеться это примерно так : Создал окно, запомнил его handle, если окно перестало быть нужным -заслал ему WM_CLOSE, и почистил память если было динамическое выделение.
__________________
Best Regards
alexey_ma вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 16:19.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.