Ä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
-
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
-
Und warum hast Du nicht auf das gehört was ich Dir geschrieben habe: SetSizes?
Du brauchst ganz und gar kein CToolBarCtrl!