tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
1214
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von a_d
    a_d a_d ist offline Mitglied
    Registriert seit
    Feb 2004
    Beiträge
    24
    Hi,

    habe folgendes Problem:

    Ich habe in meinem Programm (mit MFC) eine zweite Symbolleiste angelegt. Diese erscheint jetzt jedoch immer unter der ersten.

    Was muss ich machen, damit die zweite Symbolleiste rechts neben der ersten angzeigt wird und nicht darunter?

    Gruß Andi
     

  2. #2
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Du kannst die Methode DockControlBar verwenden.
    CFrameWnd:ockControlBar
    void DockControlBar( CControlBar * pBar, UINT nDockBarID = 0, LPCRECT lpRect = NULL );


    Ich habe hier ein Funktion, die das erledigt - leider weiss ich nicht mehr, wer den Schnipsel geschrieben hat:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    void CMainFrame::DockControlBarLeftOf( CToolBar* Bar, CToolBar* LeftOf )
    {
      CRect             rect;
      DWORD             dw;
      UINT              n;
      
      // get MFC to adjust the dimensions of all docked ToolBars
      // so that GetWindowRect will be accurate
      RecalcLayout( TRUE );
      
      LeftOf->GetWindowRect( &rect );
      rect.OffsetRect( 1, 0 );
      dw=LeftOf->GetBarStyle();
      n = 0;
      n = ( dw & CBRS_ALIGN_TOP ) ? AFX_IDW_DOCKBAR_TOP : n;
      n = ( dw & CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
      n = ( dw & CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n;
      n = ( dw & CBRS_ALIGN_RIGHT && n==0) ? AFX_IDW_DOCKBAR_RIGHT : n;
      
      // When we take the default parameters on rect, DockControlBar will dock
      // each Toolbar on a seperate line. By calculating a rectangle, we
      // are simulating a Toolbar being dragged to that location and docked.
      DockControlBar( Bar, n, &rect );
    }
    Bar wird links von LeftOf eingesetzt.
    -----
    Du kannst die Funktion am besten aus CMainFrame::OnCreate() aufrufen, nachdem die Toolbars created sind.
    Geändert von Kachelator (21.02.04 um 18:09 Uhr)
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  3. #3
    Avatar von a_d
    a_d a_d ist offline Mitglied
    Registriert seit
    Feb 2004
    Beiträge
    24
    Hi,

    gerade ausprobiert! Klappt prima, danke!

    Gruß Andi
     

  4. #4
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Bitte! Freut mich!
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  5. #5
    Avatar von a_d
    a_d a_d ist offline Mitglied
    Registriert seit
    Feb 2004
    Beiträge
    24
    ...hätte aber noch eine Frage bezüglich Symbolleisten.
    Ich habe gerade festgestellt, dass es keine Funktion gibt, die die Hauptsymbolleiste ausblendet, sondern nur über ID_VIEW_TOOLBAR geregelt wird.

    Wie kann ich das jetzt ändern, dass ich meine eigene Symbolleiste auch auf die Art und Weise ein- bzw. ausblenden kann?

    Habe schon in der Hilfe nachgesehen, doch da bin ich nicht durchgestiegen.

    Gruß

    André
     

  6. #6
    Registriert seit
    Jul 2003
    Ort
    Duisburg (NRW)
    Beiträge
    1.788
    Weiss ich auch nicht, aber du könntest versuchen, den Toolbar mit FloatToolbar() zu lösen und ihn dann mit toolbar.ShowWindow( SW_HIDE ) verstecken.
     
    Chor: "Wir sind der Chor, und wir stimmen zu. Wir stimmen zu, wir stimmen zu, wir stimmen zu."

  7. #7
    Avatar von a_d
    a_d a_d ist offline Mitglied
    Registriert seit
    Feb 2004
    Beiträge
    24
    Hi,

    habe etwas in einem Beispiel gefunden, das klappt prima:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    void CMainFrame::OnToolBarRWToolsCheck()
    {   
        m_wndRWTools.ShowWindow(m_wndRWTools.IsWindowVisible() ? SW_HIDE : SW_SHOWNA);  
    }
          
    void CMainFrame::OnUpdateToolBarRWToolsMenu(CCmdUI* pCmdUI)  
    {
        ASSERT(pCmdUI->m_nID == ID_VIEW_TOOLBAR_RWTOOLS); 
        pCmdUI->SetCheck(m_wndRWTools.IsWindowVisible());  
    }

    Müssen dann nur noch im Meldungshandler aufgerufen werden.

    Trotzdem Danke!

    Gruß André
     

Ähnliche Themen

  1. Cursor Position festlegen
    Von hairy im Forum C/C++
    Antworten: 4
    Letzter Beitrag: 28.03.08, 19:35
  2. SWT: Border Position im Textfeld festlegen
    Von Xanthus im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 19.07.07, 13:00
  3. mit DIV die Position festlegen
    Von gingerswelt im Forum CSS
    Antworten: 12
    Letzter Beitrag: 10.01.06, 06:09
  4. ExcelMakro Diagramm Position festlegen
    Von Gamedemos im Forum Visual Basic 6.0
    Antworten: 3
    Letzter Beitrag: 22.11.05, 15:56
  5. Mc Position festlegen
    Von michback im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 16.04.05, 10:00