DoDataExchange



  • Was stimmt in diesem code nicht:

    void CKuerzenDlg::DoDataExchange(CDataExchange* pDX)
    {
            DDX_Text(pDX, IDC_KBRUCHZ, kuerzen.m_zaehler);
    	DDX_Text(pDX, IDC_KBRUCHN, kuerzen.m_nenner);
    	DDX_Text(pDX, IDC_RESULTZ, result.m_zaehler);
    	DDX_Text(pDX, IDC_RESULTN, result.m_nenner);
    	CDialog::DoDataExchange(pDX);
    }
    

    Ein assert in dlgdata.cpp (zeile 44) schlägt an. 😞

    mfg
    Fair_Lord



  • Ich kann nicht wirklich einen Fehler erkennen. Bei mir steht CDialog::DoDataExchange() vor der anderen Passage, ging aber in einem Probelauf auch dahinter.
    Was wird denn in dem Assert abgefragt? Bei mir steht in Zeile 44 in der besagten Datei kein Assert -.-

    Gruss,
    DeSoVoDaMu



  • HWND CDataExchange::PrepareCtrl(int nIDC)
    {
    	ASSERT(nIDC != 0);
    	ASSERT(nIDC != -1); // not allowed
    	HWND hWndCtrl;
       COleControlSite* pSite = NULL;
    	m_pDlgWnd->GetDlgItem(nIDC, &hWndCtrl);
    	if (hWndCtrl == NULL)
    	{
    	  // Could be a windowless OCX
    	  pSite = m_pDlgWnd->GetOleControlSite(nIDC);
    	  if (pSite == NULL)
    	  {
    		   TRACE(traceAppMsg, 0, "Error: no data exchange control with ID 0x%04X.\n", nIDC);
    		   ASSERT(FALSE); //Zeile 44
    		   AfxThrowNotSupportedException();
    	  }
    	}
    	m_idLastControl = nIDC;
    	m_bEditLastControl = FALSE; // not an edit item by default
    
       return hWndCtrl;
    }
    


  • Der Nachricht, die mit TRACE ausgegeben wird, nach zu urteilen, ist das Objekt, von welchem du die Daten einliest, nicht dafür geeignet, da es kein DDX unterstützt. Was für Controls verkoerpern denn IDC_KBRUCHZ und Co.?
    Sollten sie kein DDX unterstuetzen, musst du die Daten manuell von diesen Controls auslesen und in den entsprechenden Variablen speichern.
    Hast du diese denn von Hand eingetragen? Soweit ich weiss wird für solche Controls garnicht erst DDX eingerichtet. 😕

    Gruss,
    DeSoVoDaMu



  • 1.) es sind eingabefelder
    2.) der pc hatts mir jedenfalls nicht gemacht¨

    der fehler tritt nur bei den zwei obersten auf, die anderen gehen


Anmelden zum Antworten