Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Probleme mit crecordview

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 < [ 2 ]
000
22.09.2003, 13:09 Uhr
~Peter
Gast


Moin,

Muß während meines Praktikums nen Datenbankzugriff programmieren, hab dabei aber folgendes Problem:
Der Zugriff auf die Datenbank soll mittels Dialog erfolgen, der sich aber erst öffnet, wenn ich im Hauptfenster einen Button klicke.
Nachdem ich also einen Dialog nach den Vorgaben erzeugt habe(kein Rand untergeordnet...) weise ich diesem mittels Klassenassi einer Recordview klasse zu, die auf eine bestehende Datenbank zugreift.
Mein Problem ist nun, wie ich den Dialog aufrufen kann. Bei einem normalen Dialog mache ich das mit DoModal, aber die Funktion ist nicht in Recordview enthalten.
Hab echt schon viel gesucht, aber dazu noch nix gefunden,
das ich vc++- Anfänger bin brauch ich wohl nicht zu erwähnen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.09.2003, 14:44 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Du musst DoModal von deinem Dialog auf dem dein RecordView drauf aufrufen und nicht von dem RecordView selber
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.09.2003, 14:59 Uhr
~peter
Gast


Die Basisklasse für meinen Dialog ist ja aber RecordView, eine Dialogklasse habe ich gar nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.09.2003, 22:57 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Peter,
CRecordView funzt in einem Dialog nicht, da Du ja auch keine Dokumentenklasse hast. Wenn Du CRecordset (etc.) in einem Dialog nutzen willst, musst Du selbst alles implementieren.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 22.09.2003 um 22:58 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
23.09.2003, 09:09 Uhr
~peter
Gast


Äh, ich glaube, ich hab mich da ein wenig undeutlich ausgedrückt.
Für eine Klasse Crecordview benötige ich doch einen Dialog als Grundlage.
(abgeleitete Klasse von Cformview)
In diesem Dialog zeige ich dann bzw lösche oder editiere die Daten der Datenbank.
Mein Problem ist nun lediglich, wie ich diesen Dialog zur Anzeige bringe.
Hab es schon mit Showwindow versucht, aber da bekomme ich dann einen Fehler zur Laufzeit.


C++:
BOOL CWnd::ShowWindow(int nCmdShow)
{
    ASSERT(::IsWindow(m_hWnd));         // Fehlerstelle

    if (m_pCtrlSite == NULL)
        return ::ShowWindow(m_hWnd, nCmdShow);
    else
        return m_pCtrlSite->ShowWindow(nCmdShow);



hoffe das Problem ist nun klarer geworden???

peter

Dieser Post wurde am 23.09.2003 um 20:10 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.09.2003, 16:23 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
stellt sich mir die frage was Du für eine Anwendung hast? SDI? Wenn ja mußt Du "switchen".
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 23.09.2003 um 16:24 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.09.2003, 19:57 Uhr
~peter
Gast


aha, wie gesagt bin ich eher ein Anfänger.
Es wird wohl auf eine SDI-Anwendung hinauslaufen,
Was bedeutet denn switchen?
Switch ich denn zwischen 2 Main Fenstern hin und her?
Wie implementiere ich sowas???
Ein kleiner Programmcode würde mir da sehr weiterhelfen...
trotzdem schon einmal Danke für deine Mühe!!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.09.2003, 22:47 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Peter,
www.fun-soft.de/showtopic.php?threadid=1204
Wette die Suchfunktion bringt da noch mehr. Wenn Du nicht klar kommst, dann melde Dich einfach wieder.
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
24.09.2003, 09:54 Uhr
~peter
Gast


ersteinmal vielen Dank,
aber so richtig funzen tut das noch nicht.
Wenn ich die Funktion richtig verstanden habe, kann ich entweder die Funktion mit der ID des dialogs der gewünschten anzuzeigenden von cview abgeleiteten klasse aufrufen, oder die unterschiedlichen von cviewabgeleiteten klassen in der switch anweisung für cfirstview bzw csecview usw. einsetzen???
Wenn dem so ist habe ich glaube ich alles richtig gemacht.
nur bekomme ich nun wieder einen Fehler zu Laufzeit, sobalt ich die Funktion aufrufe.
debug assertion failed.


C++:
BOOL CView::PreCreateWindow(CREATESTRUCT & cs)
{
    ASSERT(cs.style & WS_CHILD);      <-Fehlerstelle

    if (cs.lpszClass == NULL)
    {
        VERIFY(AfxDeferRegisterClass(AFX_WNDFRAMEORVIEW_REG));
        cs.lpszClass = _afxWndFrameOrView;  // COLOR_WINDOW background
    }

    if (afxData.bWin4 && (cs.style & WS_BORDER))
    {
        cs.dwExStyle |= WS_EX_CLIENTEDGE;
        cs.style &= ~WS_BORDER;
    }

    return TRUE;
}



also wohl fast den gleichen wie vorher bei showwindow...

Nur nochma zur Nachfrage:
Ich erzeuge mir ne SDI anwendung, erstell mir nen Dialog, erstelle mir eine dazugehörige Klasse mit cformview als basisklasse.
mache mir nen neuen Button start in der Symbolleiste.
dann füge ich die fkt SwitchToView (auch in den Header) in mainframe ein und rufe sie in der zum neuen button gehörigen Fkt onstart mit argument = 1 auf.
für cfirstview trage ich den namen meiner von cformview abgeleiteten klasse und für csecview z.B. den namen einer anderen von cformview abgeleiteten Klasse ein.
dann erhalte ich den oben genannten fehler...
hoffe mal, das war nu nicht zu umständlich...

mfg
peter

-- edit: Die tags heißen [ cpp ], nicht [ C++ ].

Dieser Post wurde am 24.09.2003 um 10:01 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
24.09.2003, 10:19 Uhr
~peter
Gast


in meiner von cformview abgeleiteten klasse muß ich auch noch die De/konstruktoren auf public ändern, wei ich die ja sonst nicht aufrufen kann.

ps hab das mit den tags nu wohl kapiert...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: