Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » von selbst erstellter Klasse funktion von xyzView aaufrufen

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
15.12.2004, 14:15 Uhr
~sashka
Gast


hallo,
ich habe eine SDI-anwendung, dort habe ich einen Menüpunkt, bei dem sich ein dialogfenster öffnet, wenn man darauf klickt, in dem dialogfenster kann ich nun daten eingeben, wenn ich auf "OK" klicke möchte ich nun, das sich das dialogfenster schliesst und eine funktion von der Klasse xzyView aufgerufen wird. Ist das irgendwie möglich??

Habe Visual Studio .net , falls das irgendwie relevant ist.


mein einziges Problem ist halt der aufruf, denn da sagt er mir immer, das er das nicht finden kann bzw. das die funktion von einer klasse aufgerufen werden muss...!


Sashka
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.12.2004, 07:16 Uhr
sashka



falls das hier nicht alle verstanden haben und ich deshalb noch keine antwort bekommen habe, hier nochmal 'ne kurze erklärung ;-)

Wenn ich mit dem assistenten vom visual studio ein neues projekt mache, das ich xyz nenne, macht der mir die klassen xyzApp, xyzDoc, xyzSet, xyzView, MainFrame und AboutDlg! Ich habe nun eine Funktion abc hinzugefügt, die gehört zu einem dialogfenster, das ich von dem hauptfenster aus öffne. in dem dialogfenster sind 3 edit-felder, dort möchte ich zahlen eingeben, und wenn ich auf "OK" klicke soll das dialog-fenster zugehen und eine funktion von xyzView aufgerufen werden, die dann die zahlen, die ich in die edit-felder eingegeben habe verarbeitet!

ist das irgendwie möglich, das so zu machen??


hoffe, mir kann jemand von euch weiterhelfen!!!



Sashka
--
Es ist egal was man macht, hautsache man macht etwas!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.12.2004, 09:39 Uhr
Spacelord
Hoffnungsloser Fall


Hi,
ich denke mal in der Methode in der du den Dialog erstellst legst du eine lokale Variable deiner Dialogklasse an und zeigst diesen dann mit DoModal an.
Die eingegebenen Werte musst du in Membervariablen der Dialogklasse speichern und nen paar Get... Funktionen dafür schreiben.
Dann kannst du doch den Rückgabewert von DoModal auf OK überprüfen und in diesem Falle deine View Methode mit den Werten die du mit den Gettermethoden der Dialoginstanz bekommst aufrufen.

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
16.12.2004, 11:28 Uhr
sashka



Wie kann ich denn den Rückgabewert von DoModal auf OK überprüfen??
Ich hatte es eigentlich so gemacht, das ich so 'ne message für das klicken des OK-Buttons gemacht habe, aber da hab' ich ja das Problem, das ich die memberfunktion von xyzView nicht aufrufen kann... den Rest hatte ich schon so gemacht, wie du mir geschrieben hast, also den Dialog mit DoModal aufgerufen und die Werte in Membervariablem gespeichert, habe jetzt auch noch GetFunktionen dafür geschrieben, aber sooooo wirklich viel weiter hilft mir da ja nun auch nicht....
--
Es ist egal was man macht, hautsache man macht etwas!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
16.12.2004, 12:44 Uhr
Spacelord
Hoffnungsloser Fall


Im Dialog kannst du ruhig die Standardimplementierung von OnOk nehmen.Du hast ja durch deine lokale Dialogvariable auch nachdem der Dialog nicht mehr angezeigt wird Zugriff darauf.

Also, das Ganze sollte in etwa so aussehen:

C++:
void CDeineView::Eingabedialog()
{
    CDeinDlg dlg;
    int ret;
    ret= dlg.DoModal();
    if(ret==IDOK)
         this->xyz(dlg.GetWert1(),dlg.GetWert2(),dlg.GetWert3())
}



MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 16.12.2004 um 12:44 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
16.12.2004, 14:43 Uhr
sashka



hhhm.....ich rufe den dialog aber nicht von der View-Klasse auf, sondern von der MainFrame-Klasse....! Denn der Dialog soll gestartet werden, wenn ich den entsprechenden Menüpunkt anklicke, also so wie Datei -> Neu
Ich hatte das so gemacht:


C++:
void CMainFrame::OnAbfrageMaterial()
{
    // TODO: Fügen Sie hier Ihren Befehlsbehandlungscode ein.
    CMaterial m_material;
    m_material.DoModal();    
}




Kann ich den auch von der View-Klasse aus starten?? Denn das aufrufen des Dialoges erfolgt ja bei mir auch durch 'ne message... sorry, kenn mich eigentlich null mit visual c++ aus, bin gerade dabei mich da einzuarbeiten und voll verwirrt, weil ich überall was anderes lese... *lol*
--
Es ist egal was man macht, hautsache man macht etwas!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
16.12.2004, 14:45 Uhr
sashka



die message für das aufrufen des dialoges ist folgender, falls das relevant ist:


C++:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
    ON_WM_CREATE()
    ON_COMMAND(ID_ABFRAGE_MATERIAL, OnAbfrageMaterial)
END_MESSAGE_MAP()


--
Es ist egal was man macht, hautsache man macht etwas!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
16.12.2004, 15:37 Uhr
Spacelord
Hoffnungsloser Fall


Dann hol dir mit GetActiveView nen Zeiger auf deine View und caste diesen zum exakten Typ
der View Klasse.


C++:
.....
if(ret==IDOK)
  ((CDeineView*)GetActiveView())->DeineMethode(dlg.GetWert1,.....




Wenn deine Membervariablen public sind brauchst du natürlich auch keine Get Methoden,aber du hälst dich ja bestimmt daran das die Attribute privat sind und nur über get/set Methoden auf diese zugegriffen wird .

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
17.12.2004, 08:48 Uhr
sashka



was ist ret für eine variable und was muss ich tun, wenn er xyzView nicht kennt?? Die Klasse gibt es, muss es ja, denn es steht ja so in der Klassenansicht, aber er kennt sie enfach nicht, und wenn ich die header-datei einbinde, krieg' ich ganz viele Fehler, wo er über irgendwie ; meckert, die im generierten code sind....
--
Es ist egal was man macht, hautsache man macht etwas!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
17.12.2004, 09:43 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von sashka:
was ist ret für eine variable und was muss ich tun, wenn er xyzView nicht kennt??

Was liefert DoModal den zurück?Und als was hab ich ret den weiter oben im Beispiel deklariert?
Kann ja wohl nicht zu schwer sein in der MSDN nachzuschauen,oder muss ich das für dich tun?


Zitat von sashka:
Die Klasse gibt es, muss es ja, denn es steht ja so in der Klassenansicht, aber er kennt sie enfach nicht, und wenn ich die header-datei einbinde, krieg' ich ganz viele Fehler, wo er über irgendwie ; meckert, die im generierten code sind....


Den Header musst du aber einbinden.Spiel mal nen bisschen mit der Reihenfolge der include´s rum.Eventuell musst du in einer Klasse auch ne Vorwärtsdeklaration machen.
Wo genau meckert der Compiler denn ?

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
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: