CTestDialogのデフォルトコンストラクタをオーバーライドして、CStringを渡すことができます。MFCのダイアログのデフォルトコンストラクタをオーバーライド
にはどうすれば
CTestDialog(CString strValue = NULL);
するMFCでこれは可能ですか、それはちょうど私の想像で通過していますか?
class CTestDialog : public CDialog
{
DECLARE_DYNAMIC(CTestDialog)
public:
CTestDialog(CWnd* pParent = NULL); // standard constructor
CTestDialog(CString strValue = NULL); // Custom Constructor
virtual ~CTestDialog();
// Dialog Data
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_TESTDIALOG };
#endif
protected:
CString _filename;
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
virtual BOOL OnInitDialog();
};
使用法:
CString str = _T("Some Text");
CTestDialog dlg(str);
dlg.doModal();
UPDATE行で1
:
dlg.DoModal();
デバッグアサートに失敗しました。 Microsoft Visual C++ランタイムライブラリダイアログが表示されます。
UPDATE 2
IMPLEMENT_DYNAMIC(CTestDialog, CDialog)
CTestDialog::CTestDialog(CWnd* pParent /*=NULL*/)
: CDialog(IDD_TESTDIALOG, pParent)
{
}
CTestDialog::CTestDialog(CString str)
: CDialog(CTestDialog::IDD, NULL)
{
_filename = str;
}
CTestDialog::~CTestDialog()
{
}
void CTestDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CTestDialog, CDialog)
END_MESSAGE_MAP()
BOOL CTestDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
AfxMessageBox(_filename.GetBuffer());
return TRUE;
}
にはいそれが可能です。あなたは何か問題を抱えていますか? – TheUndeadFish
はい、上記のコードを書くたびにデバッグアサーションダイアログが表示されます。私は正しくそれを行う方法を見つけることはありません。どんなサンプルも非常に役に立ちます – Rahul
@DhegdeModal() - >デバッグアサーションで@TheUndeadFishが発生します。それを解決するために何をすべきかわからない。 – Rahul