tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
637
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Thopeto Thopeto ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    227
    Hallo

    ich möchte aus meinem SampleView eine Funktion aufrufen, die sich im CDebugView befindet.

    wollte das so probieren, aber das klappt nicht:
    C/C++ Code: CDebugView* pView = new CDebugView();
    if(pView != NULL)
    {
    ((CDebugView*)pView)->TuWas();
    }


    Code :
    1
    2
    3
    4
    5
    
    CDebugView* pView =  new CDebugView();
        if(pView != NULL)
        {
            ((CDebugView*)pView)->TuWas();
        }




    Das ganze spielt sich in eine MDI anwendung ab und der DebugView ist in einer Sizebar http://www.codeproject.com/docking/dockview.asp gebettet


    gruß
    Thorsten
     

  2. #2
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Du bastelst dir ein neues Objekt und erwartest, dass der Zeiger darauf das andere beeinflusst?

    An der Stelle, wo du den DebugView erzeugst, merke dir einen Pointer drauf. Mit dem kannst du später problemlos arbeiten.

    Alternative: Wenn du an einen CView*-Pointer von dem DebugView rankommst, kannst du den auch brutal casten. Das würde ich aber nur tun, wenn du genau weisst, dass es der richtige View ist.
    Geändert von Endurion (15.02.05 um 11:07 Uhr)
     

  3. #3
    Thopeto Thopeto ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    227
    Zitat Zitat von Endurion
    An der Stelle, wo du den DebugView erzeugst, merke dir einen Pointer drauf. Mit dem kannst du später problemlos arbeiten.
    kannst du mir das näher erläutern?!wäre echt nett von dir wen du mir das mal erklärt, wie du das meinst?!

    Weil an diesem Problem hänge ich schon glatte 2 wochen...habs dann zwischen durch zur seite gelegt, aber ich will das endlich kapieren und schaffen. aber meine ganze C++Bücher geben nicht mehr her (mein hirn auch nicht mehr )

    gruß
    Thorsten
     

  4. #4
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Legst du den CDebugView selber an? Oder geht das über die Doc-Template?

    Wenn du den selber anlegst, musst du ja irgendwo new CDebugView stehen haben. An der Stelle kannst du dir doch den Pointer abgreifen.
     

  5. #5
    Thopeto Thopeto ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    227
    ich sitz echt momentan auf der leitung

    sorry, aber ich bin da leider kein profi

    fangen wir mal so an, wie würdest du es machen?!

    in TuWas() steht momentan das drin AfxMessageBox("huhu");

    wen ich aber z.B. SetTimer(); einfüge, kommt ein fehler in der afxinI datei, das m_hWnd gleich NULL sei.

    sow eit kam ich, die frage ist nur, wie kann ich das beheben?! In all meinem schlauen büchern ist der bisherige weg, so beschrieben worden, aber ich mach schon am anfang einen fehler, bloss weiß ich nicht wo.


    gruß
    Thorsten
     

  6. #6
    Avatar von Endurion
    Endurion Endurion ist offline Mitglied Diamant
    Registriert seit
    Apr 2004
    Beiträge
    2.151
    Hast du in deinem Programm zwei Views, also den CSampleView und den CDebugView gleichzeitig offen?
    Wenn nicht, dann klappt das schon mal nicht. Das SetTimer zum Bleistift klappt einfach deshalb nicht, weil der CDebugView (noch) kein HWND hat. Da muss der View schon tatsächlich existieren, nicht nur die Klasse dazu.

    Man beachte:
    In MFC sind die CWnd-Klassen (und alle abgeleiteten, also auch die CViews) Code-Klassen, die ein HWND klammern. Das beinhaltet aber auch, dass eine CWnd-Klasse existieren kann, OHNE dass das zugehörige HWND existiert. In dem Fall bekommst du dann natürlich auch immer die Assert in Afxinl.
     

  7. #7
    Thopeto Thopeto ist offline Mitglied Gold
    Registriert seit
    Jan 2005
    Beiträge
    227
    genau das hab ich mir auch gedacht *hust hust*
    (man will ja nicht so dumm dastehen)

    ne spass bei seite. Der CSampleView ist in einem CMDIChildWnd eingebetten und er CDebugView in der CViewbar von codeprojekt.

    das ganze sieht dann so aus: Guckst du

    beide sind sichtbar
     

Ähnliche Themen

  1. Funktion in einem anderen Fenster aufrufen
    Von swunder im Forum Borland CBuilder und VCL
    Antworten: 0
    Letzter Beitrag: 02.01.08, 16:54
  2. Klasse in einem anderen Projekt aufrufen
    Von netrobot im Forum Java
    Antworten: 6
    Letzter Beitrag: 20.12.05, 18:26
  3. Funktion aus einem anderen Movieclip aufrufen
    Von Blandorin im Forum Flash Plattform
    Antworten: 6
    Letzter Beitrag: 13.04.05, 20:24
  4. Funktion in eine anderen Form aufrufen? Call?
    Von Mailyn im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 03.04.05, 22:13
  5. Von einem Fenster eine Methode in einem anderen Aufrufen
    Von Benzol im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 08.11.04, 10:45