Dialog-Resource in TabControl



  • Wie siehts denn eigentlich allgemein aus?

    Ist es Blödsinn ein CDialog in ein TabControl zu stecken, oder müsste das an sich eigentlich funktionieren?
    Ich hab irgendwie nirgens sowas ähnliches gefunden.

    Falls irgendwelche Infos noch nützlich wären, nur raus damit. 🙂



  • Gibt es dafür schon eine Lösung oder nicht? Mich würd das auch interessieren da ich einen ähnlichen Fall derzeit hab...

    Lg
    m0w



  • Leider gar nicht. Ich bin in diesem Fall immer noch gleich weit. 😕

    Heisst das du probierst auch eine Resource in ein Control zu stecken?
    Ich hab immernoch keine Ahnung, ob das so gedacht ist, oder ob man das "normalerweise" auf ne ganz andere Weise handhabt.

    Vielleicht kann man irgendwie die Messages vom DockingPane direkt zum Dialog umleiten.

    Ich hoffe hier kommen noch ein paar Meinungen dazu. 🙂



  • Mich hat es beim Umstellen auf das Feature Pack auch ganz schön gefuchst (ehrlich gesagt ich bin immer noch nicht überall ganz durchgestiegen).
    Ich hatte auch mit den DockablePanes Probleme. Im Endeffekt habe ich in meinem DockablePane ein CDialogBar created, welches die Ressource lädt.

    Command-Routing funktioniert, du musst nur im OnSize des DockablePanes die WindowPos des DialogBars anpassen.


  • Mod

    Kontrolliere mal nur die Behandlung von WM_NCHITTEST. Evtl. ist hier was faul.



  • @dwo77
    Hmm.. wenn ich DialogBars statt Dialoge benutze, wird dieser im Gegensatz zum Dialog leider nicht mehr angezeigt.
    Mit PropertyPages wär ich gleich weit wie mit Dialogen. Angezeigt aber keine Maus-Events.
    Im OnSize von MyPane setze ich momentan nur die Position des TabCtrl neu.
    SetWindowPos auf den Dialog klappt ja nicht.

    @Martin
    Im MyDialog:

    BEGIN_MESSAGE_MAP(MyDialog, CDialog)
    	ON_WM_LBUTTONDOWN()
    	ON_WM_NCHITTEST()
    	ON_BN_CLICKED(...)
    	ON_EN_UPDATE(...)
    END_MESSAGE_MAP()
    
    ...
    
    LRESULT MyDialog::OnNcHitTest(CPoint point)
    {
    	TRACE(_T("HitTest!\n"));
    	return CDialog::OnNcHitTest(point);
    }
    

    Was mir sonst noch als u.U. hilfreich einfallen würde wär, dass der Dialog als Member im MyPane gesetzt ist und dessen Create initialisiert wird.
    Zum TabControl wird es erst später hinzugefügt.
    Leider ohne Erfolg. Die Message kommt nicht an. 😕



  • Vor AddTab:

    ::SetParent(m_pMyDialog->m_hWnd, m_wndTabCtrl.m_hWnd);
    

    Es scheint, dass dies mein Problem gelöst hat. oO
    Sogar resize funktioniert scheinbar perfekt.

    Ich bin zwar noch etwas skeptisch, weil ich nicht weiss, ob das wirklich so gedacht ist, dass man da jetzt quasi mit dem Holzhammer das Message-Routing fixt,.. aber solange es funktioniert. ^^"

    Vielen Dank für eure Hilfe!


  • Mod

    Hättest Du evtl. das Control gleich als Child des Tab-Controls anlegen sollen?
    Was passiert dann?



  • Genau das gleiche.
    Ist aber schöner, du hast recht. 🙂
    Im Nachhinein wirkt das alles furchtbar logisch.

    m_pMyDialog->Create(IDD_MYDIALOG,&m_wndTabCtrl);
    

  • Mod

    Euronymuz schrieb:

    Ist aber schöner, du hast recht. 🙂
    Im Nachhinein wirkt das alles furchtbar logisch.

    Jo. Vermutlich lag es einfach an überlappenden (unsichtbaren) Fenstern.
    Wäre interessant dies noch mal im Spy++ in der nicht funktionierdnen Weise anzusehen.
    Dann hättest Du evtl. gesehen, dass sich hier evtl. zwei Siblings überlagern.


Anmelden zum Antworten