Dumme Frage: SDI mit Dialog als Hauptfenster? + Featurepack



  • Hallo,

    ich hoffe ihr haut mir die Frage nicht gleich um die Ohren, weil sie für
    euch sicher banal ist. Ich muss jedoch noch sehr viel lernen und hoffe das
    auf diesem Weg zu verstehen...

    Bisher hab ich nur MFC-Apps entworfen, die auf Dialogen basierten.
    Durch das tolle FeaturePack interessiere ich mich jetzt auch für SDI-Anwendungen.

    Das Problem an der Sache ist, dass ich gar keine eignen Dateitypen brauche.
    Ich will da meinen Dialog reinsetzen, aber die Vorzüge eines schicken
    "drum herum" vom Featurepack nutzen können (Ribbonbar usw).

    In meiner Probeanwendung hab ich also beim letzten Schritt gesagt
    ableiten von CFormView. Hoffe das ist richtig? Zumindest war eine
    Dialogfläche vorhanden, wo ich alles raufpacken konnte wie gewohnt.

    Aber ich komme mit diesen Klassen View, Doc und Mainframe nicht klar.
    Wie komme ich an die Membervariable fürs Ribboncontrol ran?
    Die liegt in Mainfrm.h, da ist aber alles protected.

    Kann man nicht diese Membervariablen des Mainframe ansteuern und
    z.B. einen neuen Statuszeilentext oderso aus dem Dialog heraus setzen?

    Visual C++ in 21 Tagen ist zu speziell was SDI angeht. Will sagen
    damit hab ich es nicht verstanden 😞


  • Mod

    Dann solltest Du noch mal einen zweiten Versuch starten und verstehen lernen, warum es eine Trennung zwischen Doc/View gibt. Wenn Du weiterhin im Stile einer Dialogbasierenden Anwednung arbeiten willst, damm Behandle Deinen CView wie bisher Deinen CDialog und vergiss CDocument. Außer Du willst wirklich auch Datenspeichern und hast ein Dateimanagement.
    Der Sinn der Klassen ist es gerade gegeneinander abgekapselt zu sein. Du benötigst kleinen Zugriff auf die Membervariablen im Mainframe! Die UI wird im Allgemeinen über Update Handler gesteuert (Stichword Command Routing).
    Stichwort ON_UPDATE_COMMAND_UI und ON_COMMAND!



  • Hallo Martin,

    ON_COMMAND /UPDATE_COMMAND sind in der Mainfrm.cpp vorhanden für z.B.

    ON_COMMAND(ID_VIEW_CAPTION_BAR, &CMainFrame::OnViewCaptionBar)
    	ON_UPDATE_COMMAND_UI(ID_VIEW_CAPTION_BAR, &CMainFrame::OnUpdateViewCaptionBar)
    

    Wie hilft mir das in meiner Dialogklasse (CFormView) weiter?
    Wenn ich es halbwegs verstanden habe, soll ich keine membervariablen
    ansprechen, sondern das anders machen. Aber wie 😕
    SendMessage wird es jawohl nicht sein. Ich bin da absolut nooby, möchte
    die Grundsätze aber wirklich gerne lernen.

    Vielleicht hast du ja auch eine Buchempfehlung für diese SDI-Thematik?


  • Mod


Anmelden zum Antworten