Zugriff auf Member-Variable aus anderer Klasse



  • Wie kann man auf eine Member- Variable im CMainDialog von einem CView aus zugreifen ?
    Hab auf Grundlage der CHtmlView- Basisklasse eine Web- Anwendung mit C++ gebastelt. In der Titelleiste (sprich IDR_MAINFRAME) eine Schaltfläche. Für diese kann ich eine Member- Variable nur im CMainDialog mit dem Klassen- Assistenten einrichten. Das Klick- Ereignis wird aber im CView definiert.
    Ziel ist es beim Klick auf die Schaltfläche sie auszugrauen (sprich deaktivieren), was man ja normalerweise mit EnableWindow macht.
    Probiert hab ich das, hat aber nicht funktioniert:

    ((CMainDialog*)GetActiveWindow)->m_btnTest.EnableWindow(TRUE);
    

    Wer kann mir beim Zugriff auf die Schaltfläche helfen ?



  • Probier das ganze mit CView::GetParentFrame()



  • Funzt nicht.
    Bei CView::GetParentFrame() handelt sich's ja auch um eine Funktion. Aber wenn ich die Funktion auch auf den CMainDialog-Pointer anwende, macht er's nicht. Muß irgendwie anders gecastet werden.
    Ich hab auch GetDialog schon probiert, das klappt allerdings auch nicht.



  • AfxGetMainWnd()



  • Klappt irgendwie alles nicht.
    Könnt's ja selbst mal probieren. Hab das Projekt mal als ZIP (< 100 KB) in mein Homepage- Verzeichnis gespielt.
    http://www.schenser-online.de/cpp



  • Du hat im CCAwzView einen Handler dazu. Du brauchst zum enablen bzw. disablen einen UpdateCommandUI-Handler!

    Example:

    OnBtnStartUpdate( CCmdUI* pCmdUI)
    {
    pCmdUI->Enable( FALSE);
    }
    


  • Das geht doch aber gar nicht. Für Button kann man doch nur "BN_CLICKED" und "BN_DOUBLECLICKED" erstellen. Die Sache mit dem UpdateCommandUI- Handler ist mir bisher nur bei Menübefehlen bekannt.
    Hast du's denn mal ausprobiert an den Source- Files, die in der ZIP waren ?
    Wenn's bei dir gefunzt hat, schick's doch einfach mal an meine Mail- Adresse [url=mailto:jens.friedrich@onlinehome.de">jens.friedrich@onlinehome.de[/url]



  • Menübefehle, Toobarbuttons und auch Dialogbarbuttons kann man damit updaten. Hab das schon öfter gemacht, funzt ohne Probleme!



  • Keine Ahnung, woher du den UpdateCommandUI-Handler nehmen willst. Ich kann jedenfalls keinen darin anlegen. 😕

    <img src="http://www.schenser-online.de/cpp/no.jpg">
    

    Wie sieht's denn aus, wenn ich im CMainDialog 'ne Member- Funktion erstelle und dort

    m_btnStart.EnableWindow(TRUE);
    

    eintrage. Gibt's da 'ne Möglichkeit die Funktion vom CLICKED- Event aus aufzurufen ?



  • [ Dieser Beitrag wurde am 17.01.2003 um 18:35 Uhr von schenser editiert. ]


Anmelden zum Antworten