@MikhailEdoshin

MFC в «обычной» Win32 DLL и DLLMain?

Кто разбирается в MFC, подскажите пожалуйста, правильно ли я понимаю следующие два момента:


1. В обычной Win32 DLL разработчик включает статическую связь с MFC и использует некоторые MFC-классы (например, include "afxdlgs.h" и CFileDialog). Функция DllMain не определена. В результате в DLL будет встроена DllMain из MFC, а не обычная Win32 DllMain, так?


2. Если так, то мне тоже нужно добиться, чтобы у меня была DllMain из MFC, но у меня уже есть DllMain. (Сейчас у меня чистая Win32 DLL, а основное приложение использует MFC, я пытаюсь разобраться в одном непонятном баге с модальными диалогами, и подозрение падает как раз на MFC.) Подскажите, как мне правильно переписать имеющуюся DllMain, чтобы подключить MFC. Вот набросок::

include ? /* не знаю, какой заголовок включить */

class MyDll: public CWinApp
{
public:
/* нужен ли конструктор/деструктор? */
virtual BOOL InitInstance();
virtual BOOL ExitInstance();
} theDll;

BOOL
MyDLL::InitInstance()
{
CWinApp::InitInstance();
/* код из DllMain, DLL_PROCESS_ATTACH. hInst в theDll.m_hInstance */
return TRUE;
}

BOOL
MyDLL::ExitInstance()
{
/* код из DllMain, DLL_PROCESS_DETACH */
return CWinApp::ExitInstance();
}
  • Вопрос задан
  • 3282 просмотра
Пригласить эксперта
Ответы на вопрос 1
@MikhailEdoshin Автор вопроса
Сам и отвечу — судя по всему, встраивается MFC-ный DllMain, включать нужно afxwin.h изменения примерно как я и пишу, только ExitInstance() возвращает int. Конструктор на всякий случай сделал пустой, как в примерах, зачем это нужно в C++ мне всё равно не понять.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы