2
我最近遇到一個使用MFC對話框的DLL(github)(例如,它導入"afxdlg.h"
並調用CFileDialog
),並且似乎靜態鏈接到MFC,但沒有基於CWinApp
的類。我有點困惑:是不是MFC DLL?它怎麼沒有CWinApp
?使用MFC而不使用CWinApp的DLL?
改寫:在一個Win32 DLL我使用一些MFC類(例如我包括"afxdlgs.h"
並使用CFileDialog
)和鏈接MFC靜態。沒有DllMain
。最後的DLL是否具有來自Win32或MFC的DllMain
?
如果選擇MFC版本,那麼另一個問題:使用DllMain
(無線程)使用MFC DllMain
來製作Win32 DLL的最簡單方法是什麼?以下是否正確?
#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();
}