Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

CView ruft Funktion in CDialog

Empfohlene Antworten

Veröffentlicht

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 ??

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.

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?

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.