0

問題が発生しています。SIPベースの通話ボイスオーバーIPに使用されるプロジェクト「MicroSIP」があります。VS 2010 で実行していますが、必要に応じてカスタマイズする必要があります。このため、メイン ダイアログ ( Dialer ) を編集し、他のコントロール (CEdit の編集コントロールなど) を追加し、「変数の追加」ウィザードからメンバー変数を追加するとすぐに、「DoDataExchange メソッドを更新できません」というメッセージが表示されます。さらに、プログラムに新しく配置された「エディット コントロール」の参照を取得する場合、NULL ポインターまたは未定義の参照があります。

DDX_Control(pDX, IDC_EDIT_Address, MacAddressEditCtrl );where IDC_EDIT_AddressisidおよびMAcAddressEditctrlisCWndオブジェクト内でクラッシュします。

void AFXAPI DDX_Control(CDataExchange* pDX, int nIDC, CWnd& rControl)
{
    if ((rControl.m_hWnd == NULL) && (rControl.GetControlUnknown() == NULL))    // not subclassed yet
    {
        ASSERT(!pDX->m_bSaveAndValidate);

        pDX->PrepareCtrl(nIDC);   //it crashes here...
      HWND hWndCtrl;
      pDX->m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl);
        if ((hWndCtrl != NULL) && !rControl.SubclassWindow(hWndCtrl))
        {
            ASSERT(FALSE);      // possibly trying to subclass twice?
            AfxThrowNotSupportedException();
        }
#ifndef _AFX_NO_OCC_SUPPORT

    else
    {
     if (hWndCtrl == NULL)
     {
        if (pDX->m_pDlgWnd->GetOleControlSite(nIDC) != NULL)
        {
           rControl.AttachControlSite(pDX->m_pDlgWnd, nIDC);
        }
     }
     else
     {
           // If the control has reparented itself (e.g., invisible control),
           // make sure that the CWnd gets properly wired to its control site.
           if (pDX->m_pDlgWnd->m_hWnd != ::GetParent(rControl.m_hWnd))
               rControl.AttachControlSite(pDX->m_pDlgWnd);
     }
    }
#endif //!_AFX_NO_OCC_SUPPORT

}
}
4

1 に答える 1

0

別の OnInitDialog のコードを配置して記述したことに気付きました。別のダイアログのコードを操作しようとしていたのは、メイン ダイアログ全体の制御でした。ありがとう

于 2012-04-15T22:54:58.567 に答える