Ändern der Button Größe in der Toolbar



  • Hallo zusammen,

    ich habe folgendes Problem. Ich habe eine Toolbar erstellt nach folgendem Schema:

    if (!m_wndRecordBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC , CRect(0,0,50,50)))
    	{
    		TRACE0("Fehler beim Erstellen der Symbolleiste.\n");
    		return -1;      // Fehler beim Erstellen
    	}
    

    Nun habe ich dazu Einen Button erstellt nach diesem Schema:

    CMainFrame *pFrame = (CMainFrame*) AfxGetApp()->m_pMainWnd;
    	pFrame->m_wndRecordBar.SendMessage(TB_SETBUTTONWIDTH, (WPARAM) 0,(LPARAM)(DWORD) MAKELONG(0,25));//no of button
    	pFrame->m_wndRecordBar.SendMessage(TB_AUTOSIZE, 0, 0); //automatically manage your button size
    	  HBITMAP h_bitmap; 
    		h_bitmap = (HBITMAP)LoadImage(  NULL, 
                                        "Bitmaps/toolbar-play.bmp",      // name or identifier of image 
                                        IMAGE_BITMAP,          // type of image 
    									50,                      // desired width 
                                        50,                      // desired height 
                                        LR_LOADFROMFILE          // load flags 
                                     ); 
    
        TBADDBITMAP bitid; 
        bitid.hInst = NULL; 
        bitid.nID = (UINT)h_bitmap;
    
        TBBUTTON tbbutton;      //Create TBBUTTON-Structur for saving infos about button which is to add 
        tbbutton.iBitmap = pFrame->m_wndRecordBar.SendMessage(TB_ADDBITMAP, 1, (long)&bitid);   
        tbbutton.idCommand = IDC_PLAY_TOOLBAR;       //Command-Parameter to Command-Message to recognize clicks on Toolbar-Button 
        tbbutton.fsState = TBSTATE_ENABLED; 
        tbbutton.fsStyle = TBSTYLE_FLAT; 
        tbbutton.dwData = 0; 
        tbbutton.iString = NULL; 
    
        //At last, add the button to the Toolbar 
    	int idx = pFrame->m_wndRecordBar.SendMessage(TB_ADDBUTTONS, (WPARAM) 1, (LPARAM) (LPTBBUTTON) &tbbutton);
    

    Leider ist der Button in der Toolbar jetzt winzig. Wie bekommen ich denn nun den Button genauso groß wie die Toolbar. Also ich meine damit 50 x 50 ??

    Gruß

    Wild


  • Mod

    Evtl. solltest Du es erstmal mit Lesen der Funktionsbeschreibungen versuchen.

    1. CreateEx nimmt nicht die Buttongröße.
    2. Die Buttongröße wird mit CToolBar::SetSizes bestimmt.
    3. Warum verwendest Du nicht LoadToolbar?
    4. Warum verwendest Du überall SendMessage und nicht die entsprechenden MFC Funktionen. Achtung: Die MFC macht bei Toolbars einiges selbst. Du soltest da nicht mit Window Messages dazwischen funken.



  • Hallo Martin,

    danke für dein Antwort. Das mit den Send Messages kommt daher das ich das so als Beispiel für Dynamische Buttons gefunden habe.

    Aber ich habe eine Lösung für das Problem. Man braucht einen Toolbar Control damit kann man dann die Größen verändern.

    Hier mal der Code:

    CToolBarCtrl &ctrl = pFrame->m_wndRecordBar.GetToolBarCtrl();
    ctrl.SetButtonSize(CSize(80,80));
    ctrl.SetBitmapSize(CSize(80,80));
    

    Gruß

    Wild


  • Mod

    Und warum hast Du nicht auf das gehört was ich Dir geschrieben habe: SetSizes?
    Du brauchst ganz und gar kein CToolBarCtrl!


Anmelden zum Antworten