Veröffentlicht 12. Januar 200619 j Hallo und gutes neues Jahr, ich habe eine MFC Anwendung, die als Basis-klasse CHtmlView hat. Im Programm gibt es zusetzlich einen Dialogfenster (CAnalyse). Wenn des Dialogfenster geöffnet ist, wird einen Link zusammengebaut und im CE_LearnView geöffnet mit: CView *ptr = ((CFrameWnd *)AfxGetMainWnd())->GetActiveView(); if( ptr && ptr->IsKindOf(RUNTIME_CLASS(CE_LearnView) )) { ((CE_LearnView *)ptr)->Aktualisieren(strLink); } !!! DER DIALOGFENSTER IST IMMER NOCH OFFEN !!! Das Dialogfenster hat eine Fortschrittanzeige. Die Werte in der Fortschrittanzeige setze ich mit der Funktion: void CAnalyse::FortschritanzeigeSetzen(int Position) { m_cFortschrittsanzeige.SetPos(Position); } Wie könnte ich die Funktion FortschritanzeigeSetzen(int Position) im CAnalyse (Dialogfenster) von der Klasse CE_LearnView aufrufen ??
12. Januar 200619 j Du brauchst an dieser Stelle die Instanz von CAnalyse, die du angezeigt hast, oder eine Referenz oder einen Zeiger darauf. Nur darüber kannst du eine Methode aufrufen. Wo wird denn dieser Dialog erzeugt?
12. Januar 200619 j Das Programm wird gestartet, dann zusätzlich wird des Dialogfenster (CAnalyse) gestartet. Wenn man dann im Dialogfenster auf BUTTON "Verbinden" klickt wird eine Webseite im Hauptfenster (CE_LearnView)geladen, aber der Dialogfenster (CAnalyse) bleibt offen. Meine Idee war, das in Dialogfenster (CAnalyse) ein Fortschrittanzeiger gibt. Er bekommt seine Werte von der Klasse CE_LearnVeiw.
12. Januar 200619 j Du willst hier keine Daten von Klasse A zu Klasse B übertragen, sondern von Instanz von Klasse A zu Instanz von Klasse B. Ist dir der Unterschied klar? Wo im Code wird dieser Dialog erzeugt?
12. Januar 200619 j Ist dir der Unterschied klar? Nicht so ganz. Die Beispiele, die ich gesehen habe, waren schwer . Das Dialogfenster wird in MainFrm.cpp erzeugt: // MainFrm.cpp void CMainFrame::OnFileAnalyse() { CAnalyse Dialog; Dialog.DoModal(); } Ist es das was du mains?
12. Januar 200619 j Nicht so ganz. Der Unterscheid zwischen Klasse und Instanz ist sehr wichtig für das Verständnis der objektorientierten Programmierung. Vielleicht solltest du nochmal das eine oder andere Tutorial antun. Ist es das was du mains?meinst - Ja. Der Dialog ist eine Autovariable, darum ist es heikel, die Adresse irgendwo zu speichern - du kannst dann kaum mehr sicherstellen, dass jemand einen Zeiger benutzt, nachdem es den Dialog gar nicht mehr gibt. Am besten wäre es, wenn sich der Dialog in OnInitDialog beim MainFrame "anmeldet" (also seinen this-Zeiger hinterlässt) und sich in OnOK und OnCancel wieder abmeldet. Dazu braucht der Mainframe natürlich einen Member-Zeiger, in dem er sich die Adresse des Dialogs merken kann.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.