Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Fehler beim Aufruf von Dialog mit CRecordSet-Objekten

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.11.2004, 11:13 Uhr
~chullain
Gast


Hallo,

ich hab ein Problem, wo ich überhaupt nicht durchblicke, warum es nicht geht...darum wende ich mich an Euch als letzte Hoffnung...

...Also, ich hab eine Hauptklasse CAPIApp, diese bindet zwei Header meiner zwei CRecordset-Klassen ein.


C++:
n// API.cpp : Legt das Klassenverhalten für die Anwendung fest.
//

#include "stdafx.h"
#include "API.h"
#include "AppsUser.h"
#include "DBAnbindung.h"
#include "Menue.h"
#include "NewUser.h"
#include "Disabled.h"
#include "Anmeldung1.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAPIApp


Beim Aufruf des Programms wird ein Objekt einer Dialogklasse erstellt, nämlich das Objekt der CKlasse CMenue...
Der Header dieser Klasse sieht wie folgt aus:
#if !defined(AFX_MENUE_H__DDE39864_8706_4624_8E27_B263FC151DB3__INCLUDED_)
#define AFX_MENUE_H__DDE39864_8706_4624_8E27_B263FC151DB3__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Menue.h : Header-Datei
//

/////////////////////////////////////////////////////////////////////////////
// Dialogfeld CMenue
#include "AppsUser.h"


C++:
nclass CMenue : public CDialog
{
// Konstruktion
public:
    CMenue(CWnd* pParent = NULL);   // Standardkonstruktor
    CMenue(CDBAnbindung dBConnection, CAppsUser AppsUserTab, ISaGsaRpConnection rPConnection, CWnd* pParent=NULL);   // Konstruktor mit Connect-Objekt
    CMenue(CDBAnbindung dBConnection, ISaGsaRpConnection rPConnection, CWnd* pParent=NULL);   // Konstruktor mit Connect-Objekt

    ISaGsaRpConnection GetRpConnectionObject();
    void SetRpConnectionObject(ISaGsaRpConnection rPObject);
    CDBAnbindung GetDBConnectionObject();
    void SetDBConnectionObject(CDBAnbindung dBObject);
    CAppsUser GetAppUserConnectionObject();
    void SetAppUserConnectionObject(CAppsUser AppUserObject);


Diese Klasse ruft wiederum ein neues Objekt der Klasse CAnmledung auf...
Hier ist der Aufruf:

C++:
nvoid CMenue::OnApi()
{
    if (rPConnection.IsConnected()){
        rPConnection.Disconnect();
    }
    //Anmeldung api;
    CDialog::OnOK();
    Anmeldung api(CMenue::GetDBConnectionObject(), CMenue::GetAppUserConnectionObject(), CMenue::GetRpConnectionObject(), this);
    api.DoModal();
    delete rPConnection;
}


Der Header sieht so aus:

C++:
n#if !defined(AFX_ANMELDUNG1_H__F0F45E00_CD6F_4371_8C5E_C5A1FF2C7495__INCLUDED_)
#define AFX_ANMELDUNG1_H__F0F45E00_CD6F_4371_8C5E_C5A1FF2C7495__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// Anmeldung1.h : Header-Datei
//
/////////////////////////////////////////////////////////////////////////////
// Dialogfeld Anmeldung

#include "AppsUser.h"

class Anmeldung : public CDialog
{
// Konstruktion
public:
    Anmeldung(CWnd* pParent = NULL);   // Standardkonstruktor
    Anmeldung(CDBAnbindung dBAnbindung, CAppsUser AppUserAnbindung, ISaGsaRpConnection rPConnection, CWnd* pParent = NULL); // Standardkonstruktor mit RpConnection-Object
    Anmeldung(CDBAnbindung dBAnbindung, ISaGsaRpConnection rPConnection, CWnd* pParent = NULL); // Standardkonstruktor mit RpConnection-Object

    ISaGsaRpConnection GetRpConnectionObject();
    void SetRpConnectionObject(ISaGsaRpConnection rPObject);
    CDBAnbindung GetDBConnectionObject();
    void SetDBConnectionObject(CDBAnbindung dBObject);
    CAppsUser GetAppUserConnectionObject();
    void SetAppUserConnectionObject(CAppsUser AppUserObject);

Diese Klasse ruft irgendwann mal die Klasse CMenue wieder auf...

C++:
nvoid Anmeldung::OnNaechsteSeite()
{
    if (rPConnection.IsConnected()) {

        CDialog::OnOK();
        CMenue dUI(Anmeldung::GetDBConnectionObject(), Anmeldung::GetAppUserConnectionObject(), Anmeldung::GetRpConnectionObject(), this);
        dUI.DoModal;
        delete rPConnection;
        
    }else{
        CDialog::OnOK();
        CMenue dUI(this);
        dUI.DoModal();
     }
    
    UpdateData(false);
}

Mein Sorge ist jetzt erstmal, warum muss ich schon in dem Header der Klassen CMenue und Anmeldung den Header meiner CRecordSet-Klasse "AppsUser" implementieren, obwohl ich es für die CRecordSet-Klasse "CDBAnbindung" das nicht gebraucht habe...

...und, er bricht jedes Mal das Programm ab, sobald ich von der zweiten Dialogklasse "Anmeldung" wieder zurück in die Dialogklasse "CMenue" möchte und gibt mir ein
Zitat von Verfasser:
nHEAP[API.exe]: Invalid Address specified to RtlValidateHeap

zurück

...kann mir jemand helfen?

gruss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: