Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Button, der von einer View auf andere View in VisualC++ zeigt?

beap / 4 Antworten / Baumansicht Nickles

Hallo,


ich brauch etwas Hilfe - vielleicht ist das auch leicht zu loesen. :-)


Ich will Formulare entwerfen, die sich ihre Daten aus einer Datenbanktabelle holen. Ich habe bereits ein Formular fertig, das auch gut funktioniert. Nun will und soll ich ein zweites Formular im selben Projekt(SDI, mit Datenansicht), auch mit Datenbankanbindung an eine zweite Tabelle, erstellen. Dieses Formular soll sich oeffnen, wenn man einen Button auf dem ersten bereits erstellten Formular anklickt.


Fuer die Erstellung der Formulare hab ich jeweils, fuer das erste und das zweite, die Klassen RecordSet, RecordView und .Doc angelegt. Die Anbindung an die Datenbank ist kein Problem, da ja Visual C++ das alles erledigt. Ich hab dann einen Button auf das erste Formular gelegt und ihm in der Registerkarte Nachrichtenzuordnungstabellen des Klassenassistenten eine Nachricht in die View des ersten Formulars gegeben. Nun muss man noch Programmiercode hinzufuegen, damit der Button weiss, dass er das andere Formular (das andere Fenster) aufrufen bzw. oeffnen soll.


Da liegt mein Problem! Ich bin noch neu auf diesem Gebiet und hab daher momentan nicht so ne Ahnung wie ich das realisieren kann. :-(


Wenn mir jemand helfen koennte, waere echt fantastisch!


DANKE!!! :-)

bei Antwort benachrichtigen
thomas woelfer beap „Button, der von einer View auf andere View in VisualC++ zeigt?“
Optionen

naja: das kommt drauf an wie die 2. form gemacht wurde... im einfachsten fall kann man im OnButtonClick handler einfach eine neue instanz mit new erzeugen und dann das ding bei bedarf mit ShowWindow o.ae. anzeigen.

WM_HOPETHISHELPS

this posting contains no tpyos.
bei Antwort benachrichtigen
beap thomas woelfer „naja: das kommt drauf an wie die 2. form gemacht wurde... im einfachsten fall...“
Optionen

Danke fuer die schnelle Antwort. :-)

Ich habe zunaechst ein neues Formular in den Ressourcen hinzugefuegt, indem ich in der Menueleiste von VisualC++ bei „Einfuegen“ „neues Formular“ angeklickt habe. Anschliessend hab ich dann neue Klassen dafuer angelegt: neue Basisklasse CRecordView, neuer RecordSet(wegen der zweiten Tabelle) und neue .Doc –Klasse.

Im OnButtonClick handler hab ich folgendes schon mal versucht:

void CTest11View::OnButton1()
{
// TODO: Code für die Behandlungsroutine der Steuerelement- Benachrichtigung hier einfügen

CneuView* view = new CneuView();
view->ShowWindow(SW_SHOW);
}

Der Compiler wirft keine Fehlermeldungen aus. Wenn ich das ganze dann starte, erhalte ich erst einen Laufzeitfehler, wenn ich den Button anklicke, der das andere Formular oeffnen soll.
Der Debugger zeigt mir dann einen Fehler bei der Assert-Anweisung in der Funktion ShowWindow:

BOOL CWnd::ShowWindow(int nCmdShow)
{
ASSERT(::IsWindow(m_hWnd));
if (m_pCtrlSite == NULL)
return ::ShowWindow(m_hWnd, nCmdShow);
else
return m_pCtrlSite->ShowWindow(nCmdShow);
}

Mit dieser Meldung kann ich zur Zeit gar nichts anfangen. :-(
Ich hoffe diese Info hilft ein wenig weiter, bei der Loesung meines Problems!! :-)

bei Antwort benachrichtigen
thomas woelfer beap „Danke fuer die schnelle Antwort. :- Ich habe zunaechst ein neues Formular in den...“
Optionen

das window-handle ist null. d.b. das das fenster nicht erzeugt wurde. mfc fenster werden mit create() erzeugt, das liegt in deinem beispiel vermutlich im konstruktor der klasse. da solltest du einfach mal mit dem debugger durchsteppen um nachzusehen wo das problem beim erzeugen liegt.

WM_HOPETHISHELPS

this posting contains no tpyos.
bei Antwort benachrichtigen
beap thomas woelfer „das window-handle ist null. d.b. das das fenster nicht erzeugt wurde. mfc...“
Optionen

Hallo Thomas,

ich hab mir mein Programm am Wochenende nochmal angeschaut, aber keine create()-Funktion im Konstruktor der Klasse meiner neu erstellten CFormView gefunden. :(
Wie kann ich denn jetzt dort das Fenster neu "createn"? - Welche Parameter muss ich uebergeben? bzw. Existiert ein Beispiel wie es aussehen soll und kann, damit ich es dann besser verstehe und auf mein Programm anwenden kann!? (lerne besser mit Beispielen! :))

DANKE!!! :)
Bea :)

bei Antwort benachrichtigen