Button Grösse ändern



  • Hallo zusammen,
    ich habe nach der Anleitung http://www.c-plusplus.net/forum/viewtopic-var-t-is-111101.html eine Toolbar gebastelt, welche auch wunderbar läuft.

    Gibt es eine Möglichkeit, die Grösse der Buttons zu verändern?

    Grüsse,
    Thomas



  • SendMessage mit der Nachricht TB_SETBUTTONINFO.
    Du setzt den Member dwMask der Struktur TBBUTTONINFO auf TBIF_SIZE, iniitialisierst cbSize mit der Größe der Struktur (sizeof-Operator) und gibst im Member cx Deine neue Größe (Breite) an.



  • Meinst du etwa so?

    TBBUTTONINFO tbbi;
    ZeroMemory(&tbbi, sizeof(tbbutton));
    
    tbbi.cbSize = sizeof(tbbutton);
    tbbi.dwMask = TBIF_SIZE;
    tbbi.cx = 100;
    SendMessage(hwnd_toolbar, TB_SETBUTTONINFO, TBIF_SIZE, (LPARAM)&tbbi);
    

    Dies hat keine Auswirkung.

    Thomas



  • wParam muss die ID des Buttons sein!



  • CodeFinder, ich stehe wohl ein wenig auf dem Schlauch 😞
    Welches soll die ButtonID sein? bitid?
    TB_SETBUTTONINFO muss doch auch nach TB_ADDBUTTONS kommen?

    Für ein wenig Licht bin ich dankbar.

    Thomas

    void tb_add_button(HWND hwnd_toolbar, int command, char* bitmap_filename, int style = TBSTYLE_BUTTON)
    { 
    		//Bitmap einladen
    		HBITMAP h_bitmap;
            h_bitmap = (HBITMAP)LoadImage(  NULL,
                                            bitmap_filename,      // name or identifier of image
                                            IMAGE_BITMAP,          // type of image
                                            16,                      // desired width
                                            16,                      // 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
            tbbutton.iBitmap = SendMessage(hwnd_toolbar, TB_ADDBITMAP, 1, (long)&bitid);  
            tbbutton.idCommand = command;       //Command-Parameter to Command-Message to recognize clicks on Toolbar-Button
            tbbutton.fsState = TBSTATE_ENABLED;
            tbbutton.fsStyle = TBSTYLE_BUTTON;
            tbbutton.dwData = 0;
            tbbutton.iString = NULL;
    
    		TBBUTTONINFO tbbi;
    		ZeroMemory(&tbbi, sizeof(tbbutton));
    
    		tbbi.cbSize = sizeof(tbbutton);
    		tbbi.dwMask = TBIF_SIZE;
    		tbbi.cx = 100;
    
            //At last, add the button to the Toolbar
            SendMessage(hwnd_toolbar, TB_ADDBUTTONS, (WPARAM)1, (LPARAM) (LPTBBUTTON) &tbbutton); 
    
    		SendMessage(hwnd_toolbar, TB_SETBUTTONINFO, (WPARAM)???? , (LPARAM)&tbbi); 
    
    }
    


  • Welches soll die ButtonID sein? bitid?

    Jeder Button muss eine eigene Identität haben, damit er erkannt wird, bzw. es ist sowas wie sein eigener Name. Es sieht so aus, als würdest du die API - Basics leider nicht beherrschen. Lies dir doch einfach mal ein gutes Tutorial dazu durch, nimm z.B http://winprog.org/tutorial/ da wird auch das mit den Buttons erklärt. Ein nicht so ausführliches, aber trotzdem gutes Tut ist auch noch dieses hier: http://www.win-api.de/tutorials.php

    Viel Spaß beim Durchlesen und Lernen 😉

    Mikey.



  • Die ID entspricht hier dem Parameter command (int) den Du 'Deiner' Funktion tb_add_button übergeben hast.

    Du solltest Dir allerdings trotzdem mikey's Rat zu Herzen nehmen 😉 .



  • Danke Euch beiden für die Hilfe.
    So funktioniert es.

    Gruss,
    Thomas

    void tb_add_button(HWND hwnd_toolbar, int command, int bitmap_name, char* text, int style = TBSTYLE_BUTTON)
    { 
    	TBBUTTON tbbutton;      //Create TBBUTTON-Structur for saving infos about button which is to add
        tbbutton.iBitmap = bitmap_name;
        tbbutton.idCommand = command;       //Command-Parameter to Command-Message to recognize clicks on Toolbar-Button
        tbbutton.fsState = TBSTATE_ENABLED;
        tbbutton.fsStyle = style;
        tbbutton.dwData = 0;
        tbbutton.iString = NULL;
        SendMessage(hwnd_toolbar, TB_ADDBUTTONS, (WPARAM) 1, (LPARAM) (LPTBBUTTON) &tbbutton); 
    	SendMessage(hwnd_toolbar, TB_ADDSTRING, (WPARAM) 1, (LPARAM) "0");
    
    	TBBUTTONINFO tbbi;
    	ZeroMemory(&tbbi, sizeof(tbbi));
    	tbbi.cbSize = sizeof(tbbi);
    	tbbi.dwMask = TBIF_SIZE;
        tbbi.cx = 200; 
    	SendMessage(hwnd_toolbar, TB_SETBUTTONINFO, (WPARAM)command, (LPARAM)&tbbi); 
    
    	TBBUTTONINFO tbbi1;
    	ZeroMemory(&tbbi1, sizeof(tbbi1));
    	tbbi1.cbSize = sizeof(tbbi1);
    	tbbi1.dwMask = TBIF_TEXT;
    	tbbi1.pszText = text;
    	SendMessage(hwnd_toolbar, TB_SETBUTTONINFO, (WPARAM)command, (LPARAM)&tbbi1); 	
    }
    
    int WINAPI WinMain(...)
    {
    	tb_add_button(hwnd_toolbar,2, 6, "Create a new dataset",0);
    	tb_add_button(hwnd_toolbar,1, 8, "Copy to clipboard", 0);
    }
    

Anmelden zum Antworten