MFC DLL - how to do a MFC modeless dialog during lifetime?
От: Alex Volkov Россия  
Дата: 27.07.03 11:07
Оценка:
Здравствуйте — дайте пример или опишите технику обслуживания немодального диалога из MFC dll.
DLL подгружается в не-mfc приложение (вообще неизвестное).
В MSDN этого нет.

Я понимаю что должен быть поток и процедура получающая сообщения.
Вопрос в том, что делать с CWinApp, и.т.д.

27.07.03 15:08: Перенесено модератором из 'О жизни' в MFC. — ХД
Re: MFC DLL - how to do a MFC modeless dialog during lifetim
От: Denwer Россия  
Дата: 28.07.03 05:19
Оценка:
Здравствуйте, Alex Volkov, Вы писали:

AV>Здравствуйте — дайте пример или опишите технику обслуживания немодального диалога из MFC dll.

AV>DLL подгружается в не-mfc приложение (вообще неизвестное).
AV>В MSDN этого нет.

AV>Я понимаю что должен быть поток и процедура получающая сообщения.

AV>Вопрос в том, что делать с CWinApp, и.т.д.

Вот именно для этого и служит визард, в котором нужно установить галочку на строке РЕГУЛЯРНАЯ ДЛЛ, т.е. НЕ расширение MFC. Он сгенерит приложение с уже имеющимся объектом CWinApp.
Re[2]: MFC DLL - how to do a MFC modeless dialog during life
От: Alex Volkov Россия  
Дата: 28.07.03 14:14
Оценка:
Здравствуйте, Denwer, Вы писали:

D>Здравствуйте, Alex Volkov, Вы писали:


AV>>Здравствуйте — дайте пример или опишите технику обслуживания немодального диалога из MFC dll.

AV>>DLL подгружается в не-mfc приложение (вообще неизвестное).
AV>>В MSDN этого нет.

AV>>Я понимаю что должен быть поток и процедура получающая сообщения.

AV>>Вопрос в том, что делать с CWinApp, и.т.д.

D>Вот именно для этого и служит визард, в котором нужно установить галочку на строке РЕГУЛЯРНАЯ ДЛЛ, т.е. НЕ расширение MFC. Он сгенерит приложение с уже имеющимся объектом CWinApp.


Во-первых, смешно.
Во-вторых, проблема кк раз в том, что CWinApp внутри DLL не занимается обработкой сообщений, будучи созданым из DllMain. Более того, Метод Run в CWinApp вообще не запущен (не существует user interface thread).
CWinApp внутри MFC DLL это "мертвый" обьект.

Короче, втыкаю свой пост на английском, чтобы не переписывать все по 100 раз.

I would ask how to show modeless dialog from MFC dll.
My MFC dll is a plugin for non-mfc application.
Assume DLL exports InitPlugin() and DeinitPlugin() functions.
Dialog should displayed between this calls, alongside with host app.
MSDN haven`t such example, but in TN011 claims
"If your DLL brings up modeless dialogs or has a main frame window of its own,
your application's main message pump must call a DLL-exported routine
that calls CWinApp::PreTranslateMessage".
The problem is host application for my plugin
is not mine, furthermore, not a MFC application.

My first thoughts i need a running user interface thread.
Should i use existing CWinApp or CWinThread object descendant?
Where thread object need to be created?
If it possible, please example code?
Re[3]: MFC DLL - how to do a MFC modeless dialog during life
От: Denwer Россия  
Дата: 28.07.03 14:42
Оценка:
Здравствуйте, Alex Volkov, Вы писали:

AV>Здравствуйте, Denwer, Вы писали:


D>>Здравствуйте, Alex Volkov, Вы писали:


AV>>>Здравствуйте — дайте пример или опишите технику обслуживания немодального диалога из MFC dll.

AV>>>DLL подгружается в не-mfc приложение (вообще неизвестное).
AV>>>В MSDN этого нет.

AV>>>Я понимаю что должен быть поток и процедура получающая сообщения.

AV>>>Вопрос в том, что делать с CWinApp, и.т.д.

D>>Вот именно для этого и служит визард, в котором нужно установить галочку на строке РЕГУЛЯРНАЯ ДЛЛ, т.е. НЕ расширение MFC. Он сгенерит приложение с уже имеющимся объектом CWinApp.


AV>Во-первых, смешно.

AV>Во-вторых, проблема кк раз в том, что CWinApp внутри DLL не занимается обработкой сообщений, будучи созданым из DllMain. Более того, Метод Run в CWinApp вообще не запущен (не существует user interface thread).
AV>CWinApp внутри MFC DLL это "мертвый" обьект.

Ну и ГДЕ я сказал что в ДЛЛ есть обработка сообщений или что там есть какой то поток? CWinApp объект нужен что бы управлять всеми MFC-шными объектами, типа диалога, иначе он у тебя не найдет даже ресурса при отображении этого диалога. Ну а коли ты собрался использовать в не MFC проге, то уж тут без этого CWinApp не обойтись.

CWinApp внутри MFC DLL это "мертвый" обьект — Фигня какаето, это как так мертвый? У него вызывается InitInstance & ExitInstance. Просто не создается цикл обработки сообщений. Но в тоже время кто тебе мешает руками в этих двух функция создавать и убивать свой интерфейсный поток?
Re[4]: MFC DLL - how to do a MFC modeless dialog during life
От: Alex Volkov Россия  
Дата: 28.07.03 16:27
Оценка:
Здравствуйте, Denwer, Вы писали:

D>Здравствуйте, Alex Volkov, Вы писали:


AV>>Здравствуйте, Denwer, Вы писали:


D>>>Здравствуйте, Alex Volkov, Вы писали:


AV>>>>Здравствуйте — дайте пример или опишите технику обслуживания немодального диалога из MFC dll.

AV>>>>DLL подгружается в не-mfc приложение (вообще неизвестное).
AV>>>>В MSDN этого нет.

AV>>>>Я понимаю что должен быть поток и процедура получающая сообщения.

AV>>>>Вопрос в том, что делать с CWinApp, и.т.д.

D>>>Вот именно для этого и служит визард, в котором нужно установить галочку на строке РЕГУЛЯРНАЯ ДЛЛ, т.е. НЕ расширение MFC. Он сгенерит приложение с уже имеющимся объектом CWinApp.


AV>>Во-первых, смешно.

AV>>Во-вторых, проблема кк раз в том, что CWinApp внутри DLL не занимается обработкой сообщений, будучи созданым из DllMain. Более того, Метод Run в CWinApp вообще не запущен (не существует user interface thread).
AV>>CWinApp внутри MFC DLL это "мертвый" обьект.

D>Ну и ГДЕ я сказал что в ДЛЛ есть обработка сообщений или что там есть какой то поток? CWinApp объект нужен что бы управлять всеми MFC-шными объектами, типа диалога, иначе он у тебя не найдет даже ресурса при отображении этого диалога. Ну а коли ты собрался использовать в не MFC проге, то уж тут без этого CWinApp не обойтись.


D>CWinApp внутри MFC DLL это "мертвый" обьект — Фигня какаето, это как так мертвый? У него вызывается InitInstance & ExitInstance. Просто не создается цикл обработки сообщений. Но в тоже время кто тебе мешает руками в этих двух функция создавать и убивать свой интерфейсный поток?


Ладно.
Все с вами ясно

Спасибо за участие, я уже разобрался сам.
Re[2]: MFC DLL - how to do a MFC modeless dialog during life
От: Serguei666 Беларусь  
Дата: 28.07.03 18:20
Оценка:
Здравствуйте, Denwer, Вы писали:

D>Вот именно для этого и служит визард, в котором нужно установить галочку на строке РЕГУЛЯРНАЯ ДЛЛ, т.е. НЕ расширение MFC. Он сгенерит приложение с уже имеющимся объектом CWinApp.


А зачем нам "приложение с уже имеющимся объектом CWinApp"? Нам "приложение с уже имеющимся объектом CWinApp" не ныжно. У нас ведь уже есть CWinApp — главное приложение. Зачем нам два?
Хотите сказать 'спасибо'? Тогда поставьте оценку
Re[3]: MFC DLL - how to do a MFC modeless dialog during life
От: Denwer Россия  
Дата: 29.07.03 05:19
Оценка:
Здравствуйте, Serguei666, Вы писали:

S>Здравствуйте, Denwer, Вы писали:


D>>Вот именно для этого и служит визард, в котором нужно установить галочку на строке РЕГУЛЯРНАЯ ДЛЛ, т.е. НЕ расширение MFC. Он сгенерит приложение с уже имеющимся объектом CWinApp.


S>А зачем нам "приложение с уже имеющимся объектом CWinApp"? Нам "приложение с уже имеющимся объектом CWinApp" не ныжно. У нас ведь уже есть CWinApp — главное приложение. Зачем нам два?


Первое сообщение:
S>DLL подгружается в не-mfc приложение (вообще неизвестное).
Откуда же там возьмется CWinApp?
Re[4]: MFC DLL - how to do a MFC modeless dialog during life
От: Alex Volkov Россия  
Дата: 01.08.03 00:04
Оценка:
D>>>Вот именно для этого и служит визард, в котором нужно установить галочку на строке РЕГУЛЯРНАЯ ДЛЛ, т.е. НЕ расширение MFC. Он сгенерит приложение с уже имеющимся объектом CWinApp.
S>>А зачем нам "приложение с уже имеющимся объектом CWinApp"? Нам "приложение с уже имеющимся объектом CWinApp" не ныжно. У нас ведь уже есть CWinApp — главное приложение. Зачем нам два?
D>Первое сообщение:
S>>DLL подгружается в не-mfc приложение (вообще неизвестное).
D>Откуда же там возьмется CWinApp?

А вы шутники тут, как я погляжу..
Ладно, расскажу пару фраз.

Самое смешное — это то как работает MFC внутри DLL.
(2 denwer — независимо от того, визардом она сгенерена или я руками все написал )

она (MFC) ставит хук(!) на WndProc _ЛЮБОГО_ приложения загрузившего MFC DLL,
и-так получает оконные сообщения.
а CWinApp действительно мертвый, его Run не крутится.
Re[4]: MFC DLL - how to do a MFC modeless dialog during life
От: Serguei666 Беларусь  
Дата: 01.08.03 02:09
Оценка:
Здравствуйте, Denwer, Вы писали:

D>Здравствуйте, Serguei666, Вы писали:


S>>Здравствуйте, Denwer, Вы писали:


D>>>Вот именно для этого и служит визард, в котором нужно установить галочку на строке РЕГУЛЯРНАЯ ДЛЛ, т.е. НЕ расширение MFC. Он сгенерит приложение с уже имеющимся объектом CWinApp.


S>>А зачем нам "приложение с уже имеющимся объектом CWinApp"? Нам "приложение с уже имеющимся объектом CWinApp" не ныжно. У нас ведь уже есть CWinApp — главное приложение. Зачем нам два?


D>Первое сообщение:

S>>DLL подгружается в не-mfc приложение (вообще неизвестное).
D>Откуда же там возьмется CWinApp?
А зачем он нам вообще нужен?
Хотите сказать 'спасибо'? Тогда поставьте оценку
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.