トップ回答者
DLL内でCDialogを継承したダイアログを使用する

質問
-
お世話になります。
suke326です。
DLL内でCDialogを継承したダイアログを使用したいのですが、
「warning C4251」の警告が出ます。
--- h ---
#include "DialogEx.h"
class __declspec(dllexport) CHoge
{private:
CDialogEx m_dialog;
public:
CDialog* GetDialog();
};--- cpp ---
#include "stdafx.h"
#include "Hoge.h"CDialog* CHoge::GetDialog()
{
return &m_dialog;
}そこで、
--- h ---
#include "DialogEx.h"
static CDialogEx m_dialog;
class __declspec(dllexport) CHoge
{public:
CDialog* GetDialog();
};としようかと思っています。
こうすれば、Exportするヘッダーファイルが
--- h ---
#pragma comment(lib, "Hoge_Lib.lib")
class __declspec(dllimport) CHoge
{public:
CDialog* GetDialog();
};で、動作確認できました。
--- cpp(テストコード) ---
CHoge hoge;
hoge.GetDialog()->DoModal();この使用方法に何か問題はありますでしょうか?
良い方法がほかにあるのであればであれば、
「m_dialog」をクラスのメンバとして管理したいとも思っています。
※#pragma warning(disable:4251)で警告を消すのは最終手段として考えています。
また、DLL内でCDialogを継承したダイアログを直接Exportする方法はあるのでしょうか?
「warning C4251」の警告を無視して試してみましたが、メモリアクセス違反が出るようでした。
※リソースやIDの関係で無理なのでしょうか。
--- cpp(テストコード) ---
CDialogEx dlg;
dlg.DoModal();以上、宜しくお願いします。
環境:Windows XP Pro
開発環境:Visual C++ V6.0