Недавно я наткнулся на DLL (github), которая использует диалоги MFC ( например, он импортирует "afxdlg.h"
и вызывает CFileDialog
) и, по-видимому, статически связывается с MFC, но не имеет класса, основанного на CWinApp
. Я несколько запутался: это DLL MFC или нет? Почему у него нет CWinApp
?
Перефразировано: в DLL Win32 я использую некоторые классы MFC (например, я включаю "afxdlgs.h"
и использую CFileDialog
) и статически связываю MFC. DllMain
нет. Будет ли окончательная DLL иметь DllMain
из Win32 или из MFC?
Если он выбирает версию MFC, тогда другой вопрос: как проще всего сделать Win32 DLL с DllMain
(без потоков) для использования MFC DllMain
? Правильно ли следующее?
#include "afx.h" /* correct? */
class MyDll: public CWinApp
{
public:
/* do I need constructor and destructor here? */
virtual BOOL InitInstance();
virtual BOOL ExitInstance();
} theDll;
BOOL
MyDLL::InitInstance()
{
CWinApp::InitInstance();
/* code from old DllMain, DLL_PROCESS_ATTACH.
For hInst use theDll.m_hInstance */
return TRUE;
}
BOOL
MyDLL::ExitInstance()
{
/* code from old DllMain, DLL_PROCESS_DETACH */
return CWinApp::ExitInstance();
}