Änderen der Bitmap eines Toolbar Buttons ?



  • Hallo zusammen,

    ich bin fast am verzweifeln. Ich versuche krampfhaft einen von mir erstellten Button auf dem eine Bitmap liegt zu änderen so das er nach dem Klick eine anderes Bild anzeigt. Leider will mir dies absolut nicht gelingen. Kann mir vielleicht jemand ein bisschen dabei helfen.

    Hier mal der Code der den Button erstellt:

    h_bitmap = (HBITMAP)LoadImage(  NULL, 
    			"Bitmaps/toolbar-play.bmp",      // name or identifier of image 
    			IMAGE_BITMAP,          // type of image 
    			80,                      // desired width 
    			80,                      // desired height 
    			LR_LOADFROMFILE          // load flags 
    			); 
    
    		//fill ADDBITMAP-Structur and overgive Bitmap-Handle 
    		TBADDBITMAP bitid; 
    		bitid.hInst = NULL; 
    		bitid.nID = (UINT)h_bitmap;
    
    		TBBUTTON tbbutton;      //Create TBBUTTON-Structur for saving infos about button which is to add 
    		pFrame->m_wndRecordBar.SendMessage(TB_ADDBITMAP, 1, (long)&bitid);
    		tbbutton.iBitmap = 0;    
    		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 
    		idx = pFrame->m_wndRecordBar.SendMessage(TB_ADDBUTTONS, (WPARAM) 1, (LPARAM) (LPTBBUTTON) &tbbutton);
    

    Nun habe ich bei MSDN folgenden kleinen Code ausschnitt gefunden der wie ich meine das Image änderen kann.

    // Replace one toolbar bitmap with another.
            TBREPLACEBITMAP tbrb;
            tbrb.hInstOld = ::AfxGetInstanceHandle(); 
            tbrb.nIDOld = IDB_TOOLBAR_PLAY;
            tbrb.hInstNew = ::AfxGetInstanceHandle();
            tbrb.nIDNew = IDB_TOOLBAR_PAUSE;
            tbrb.nButtons = 1;
            CToolBarCtrl& m_toolBarCtrl = pFrame->m_wndRecordBar.GetToolBarCtrl();
            BOOL bRet = m_toolBarCtrl.ReplaceBitmap( &tbrb );
    

    Leider funktoniert dies absolut nicht. Kann mir vielleicht jemand sagen woran das liegt könnte oder wie man sowas macht?? Es kann doch nicht so schwer sein einfach nur so ein kleines Bild zu wechseln oder ?! 😞

    Gruß

    Wild


  • Mod

    Schon wieder dieser Unsinn mit MFC und SendMessage Mischmasch.

    Warum platzierst DU nicht alle Deine Icons in einer Bitmap und sagts dem Button nur noch welche er anzeigen Soll. (CToolBar::SetButtonInfo Index)


Anmelden zum Antworten