Здравствуйте — дайте пример или опишите технику обслуживания немодального диалога из MFC dll.
DLL подгружается в не-mfc приложение (вообще неизвестное).
В MSDN этого нет.
Я понимаю что должен быть поток и процедура получающая сообщения.
Вопрос в том, что делать с CWinApp, и.т.д.
27.07.03 15:08: Перенесено модератором из 'О жизни' в MFC. — ХД
Re: MFC DLL - how to do a MFC modeless dialog during lifetim
Здравствуйте, 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
Здравствуйте, 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
Здравствуйте, 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
Здравствуйте, 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
Здравствуйте, Denwer, Вы писали:
D>Вот именно для этого и служит визард, в котором нужно установить галочку на строке РЕГУЛЯРНАЯ ДЛЛ, т.е. НЕ расширение MFC. Он сгенерит приложение с уже имеющимся объектом CWinApp.
А зачем нам "приложение с уже имеющимся объектом CWinApp"? Нам "приложение с уже имеющимся объектом CWinApp" не ныжно. У нас ведь уже есть CWinApp — главное приложение. Зачем нам два?
Хотите сказать 'спасибо'? Тогда поставьте оценку
Re[3]: MFC DLL - how to do a MFC modeless dialog during life
Здравствуйте, 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
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
Здравствуйте, Denwer, Вы писали:
D>Здравствуйте, Serguei666, Вы писали:
S>>Здравствуйте, Denwer, Вы писали:
D>>>Вот именно для этого и служит визард, в котором нужно установить галочку на строке РЕГУЛЯРНАЯ ДЛЛ, т.е. НЕ расширение MFC. Он сгенерит приложение с уже имеющимся объектом CWinApp.
S>>А зачем нам "приложение с уже имеющимся объектом CWinApp"? Нам "приложение с уже имеющимся объектом CWinApp" не ныжно. У нас ведь уже есть CWinApp — главное приложение. Зачем нам два?
D>Первое сообщение: S>>DLL подгружается в не-mfc приложение (вообще неизвестное). D>Откуда же там возьмется CWinApp?
А зачем он нам вообще нужен?