CMFCToolBar: Nicht alle Toolbars customizable



  • Ich habe in meinem Dialogfeld (SDI, VS2005 Style) zwei Toolbars:
    - Projekt
    - Suche

    Wenn der Benutzer Rechtsklick auf eine freie Fläche im Menü macht kann er auswählen welche Docking-Windows und Toolbars er angezeigt haben möchte - normalerweise!

    In diesem Menü wird aber nur die erste Toolbar zur Auswahl gegeben - die Zweite wird dort nicht angezeigt!?

    Ein weiterer Fehler ist:
    Jede Toolbar hat ein Customize-Button (Kleiner Pfeil nach unten am rechten Toolbar-Rand). Dort kann der Benutzer über "Add or remove Buttons" Schaltflächen hinzufügen.
    Dort werden zwar beide Toolbars aufgelistet, aber unter "Projekt" UND "Suche" finde ich unter beiden Menüeinträgen nur die Schaltflächen für "Suche"!?

    Es sind keine mehrfach verwendeten Resourcen IDs im Projekt vorhanden.

    Hier der Code:

    for (i = (TB_COUNT - 1); i >= 0; i --)
    	{
    		// ToolBar:
    		if ((mToolBars[i].CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) == FALSE) ||
    			(mToolBars[i].LoadToolBar(IDR_TBAR_MAIN_FIRST + i) == FALSE))
    			return (-1);
    
    		ASSERT(cTemp.LoadString(IDS_TBAR_MAIN_FIRST + i));
    		mToolBars[i].SetWindowText(cTemp);
    
    		ASSERT(cTemp.LoadString(IDS_TBAR_CUSTOMIZE));
    		mToolBars[i].EnableCustomizeButton(TRUE, IDCMD_TBAR_DEFAULT_CUSTOMIZE, cTemp);
    
    		// Panes der Reihe nach docken:
    		mToolBars[i].EnableDocking(CBRS_ALIGN_ANY);
    
    		if (i < (TB_COUNT - 1))
    			DockPaneLeftOf(&mToolBars[i], &mToolBars[i + 1]);
    		else
    			DockPane(&mToolBars[i]);
    	}
    

    Gruß,
    Marco



  • Es klappt wenn man 'Create()' anstatt 'CreateEx()' aufruft....!!!?!


  • Mod

    Klar verwendest Du nur eine ID.
    Du hast im Aufruf von CreateEx immer nur eine identische ID für beide Toolbars verwendet!



  • Wo das denn?


  • Mod

    Red Skall schrieb:

    Wo das denn?

    Nach meiner Antwort hättest Du auch in die MSDN sehen können? Oder?
    http://msdn.microsoft.com/de-de/library/bb984019.aspx

    virtual BOOL CreateEx(
    CWnd* pParentWnd,
    DWORD dwCtrlStyle=TBSTYLE_FLAT,
    DWORD dwStyle=AFX_DEFAULT_TOOLBAR_STYLE,
    CRect rcBorders=CRect(1, 1, 1, 1),
    UINT nID=AFX_IDW_TOOLBAR
    );



  • Autsch, hatte das falsch verstanden - dachte du hattest nen Denkfehler....

    > 'nID'.... danke


Anmelden zum Antworten