Nicht modalen Dialog andocken??



  • Hi,

    ich habe ein kleines Problem mit einer MDI Anwendung!

    Ich möchte, das bei ein nicht-modaler Dialog beim Öffnen an der linken Seite der MDI andockt, sich also so ähnlich verhält wie eine ToolBar.

    Kann man das machen?

    Quellcode wäre natürlich ganz besonders nett 😉

    Niko



  • Hi!
    Ich bins mal wieder. Ich glaub, da wirst du ein Problem haben. Einer der größten Probleme dabei ist, dass ein Docking Window nie den Focus verlieren kann, ein Dialog aber schon. Das ist einer der vielen Probleme. Erstell einfach einen CDialogBar. Ist das selbe, nur die Basisklasse ist halt anders. Dann aktivierts du das Docking mit EnableDocking und DockingState (gleich wie bei einem ToolBar):

    mfg *mike* 😃



  • Ich versuch das morgen mal,

    danke für den Tipp,
    Niko



  • Hmm,

    also die Idee ist ja ganz gut, nur mit der Umsetzung habe ich so meine Probleme. 😮

    Ich erstlle also die DialogBar und weiße ihr dan eine neue Klasse zu.
    Von welcher Klasse muss ich denn diese ableiten, von CDialog oder von CToolBar? (Naja, hat beides nicht geklappt)
    Dann will ich diesen Dialog in der MainFrame.cpp meiner Anwendung aufrufen.
    Dazu muss ich natürlich erstmal eine Variable in der .h definieren.

    Doch leider funktioniert das Create nicht.

    Könntet ihr mir bitte ein bisserl Quellcode geben??
    Niko



  • Hi!
    Du brauchst auf das Dialogfeld keine Klasse erstellen. Geht viel einfacher:

    m_wndDialogBar.Create(this, IDD_DIALOG1, WS_VISIBLE|WS_CHILD|CBRS_LEFT, 1);
    m_wndDialogBar.EnableDocking(CBRS_ALIGN_RIGHT|CBRS_ALIGN_LEFT);
    DockControlBar(&m_wndDialogBar);

    wobei CDialogBar m_wndDialogBar. Am besten Schreibst dus in CMainFrame hin, dort wo die ToolBars erzeugt werden (ist eh die einzige Möglichkeit 🙂 ). Wenn du CBRS_GRIPPER noch hinzufügst, hast du eigentlich ein richtiges Docking Window (naja fast).

    mfg mike 😃



  • Also ich habe das mal genau so gemacht wie du hier geschrieben hast, aber ich bekomme nur ne fehlermeldung wenn ich versuche zu starten. Habe ne SDI anwendung gemacht und in CMainFrm Create reingeschrieben.



  • Hi!
    Hast du beim Dialog den Stil: Untergeordnet und bei Rahmen: Keiner eingstellt?

    mfg *mike* 😃



  • Mike, noch ne dumme frage, ich habs natürlich nach deinen tipp hinbekommen, nur das er alles was im Dialog erstellt ist deaktiviert. Why????



  • Hi!
    Ich kann mir nur vosrtellen, dass du ON_COMMAND auf die einzelnen Steuerelemente deklarieren musst. Füg sie einfach in die MessageMap und dann füg noch den Funktionsprototyp afx_msg void OnXY() in die Header ein.

    mfg *mike* 😃



  • So,

    sorry das ich solange nichts geschrieben hab, aber ...

    Klar brauch ich ne eigene Klasse für die DialogBar, denn wie soll ich denn sonst die ganzen OnClicks und sowas machen??

    Außerdem brauche ich ja schon allein wegen der m_wndDialogBar Variable eine Klasse.

    Ich habe das jetzt mal versucht, aber da bekomme ich genügend Fehlermeldungen (3).

    Ich mache das eigentlich alles mit dem Klasse-Assistenten, aber ich bekomms nicht hin, ...

    Wie genau muss ich denn das machen??

    Niko



  • schau mal hier nach der code iss open source
    [email]www.datamekanix.com[/email]





  • Hi!
    Stimmt. Doch selbstgemacht schmeckts (manchmal) doch am besten 😃

    mfg *mike* 😃


Anmelden zum Antworten