CDialog派生クラスの継承(CAnimateCtrl)

[戻る]
トンプソン [E-Mail] 2005/01/28(金) 11:40:39
はじめまして。
VC++初心者です。
今、派生クラスのオーバーライドについて勉強しています。
基本クラスCDialogを継承してクラスAを作りました。

----------------------------------------------------
クラスAでインスタンス化した場合
クラスAのOnInitDialog()内で
CDialog::OnInitDialog();//クラスA内
を抜けたあと
CAnimateCtrlのhWndに実体が現れるのですが(表現がおかしかったらm(..)m)

----------------------------------------------------

クラスBをインスタンス化した場合
クラスAのOnInitDialog()内で
CDialog::OnInitDialog();//クラスA内
を抜けたあと
CAnimateCtrlのCWndはNULLのままでエラーが起きてしまいます。

----------------------------------------------------

派生クラスへのハンドル受け渡しが届いていないのかどうか探しているんですけど
力不足で・・・。
なにかヒントになることでもありましたら教えてくれませんか?

トンプソン [E-Mail] 2005/01/28(金) 13:09:10
[[解決]]
解決できました。
CDialog::OnInitDlg()の処理が把握していませんでした。
Baseクラス内を飛び越えて処理していたのが問題でした。

CFileCapturingDlg::CFileCapturingDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CFileCapturingDlg::IDD, pParent)
{

}


void CFileCapturingDlg::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
     ↑ここ

    //{{AFX_DATA_MAP(CFileCapturingDlg)
    DDX_Control(pDX, IDC_FILECAPANIMATE, m_Animate);
    DDX_Control(pDX, IDC_PROGRESS1, m_Progress);
    //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CFileCapturingDlg, CDialog)
                    ↑ここ

古いスレッドには追加発言できません。