2011-03-10 30 views
2

私は最近、"afxdlg.h"をインポートし、CFileDialogを呼び出して、MFCダイアログを使用するDLL(github)を見つけましたが、MFCに静的にリンクするように見えますが、CWinAppに基づくクラスはありません。私は多少混乱しています:それはMFC DLLかどうかですか?どうしてそれはCWinAppを持っていないのですか?言い換えるCWinAppなしでMFCを使用しているDLL?

Win32のDLLには、私はいくつかのMFCクラスを使用します(たとえば、私は"afxdlgs.h"を含めるとCFileDialogを使用)静的にリンクMFC。 DllMainはありません。最終的なDLLはWin32からまたはMFCからDllMainを持っていますか?

MFCバージョンを選択した場合、別の質問:DllMain(スレッドなし)のWin32 DLLを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(); 
} 

答えて

1

私は、MFC DLLへの標準DLLを変換する最も簡単な方法は、新しいMFC-DLLプロジェクトを作成して、生成されたファイルを使用して、それにあなたのコードの残りの部分を貼り付けることだと思います。

AFAIKソースファイルには違いはありませんが、リンカ設定にはいくつかの違いがあります。新しいプロジェクトを開始することは、多くの時間と手間を省きます。

関連する問題