P
ich habe jetzt für meine Anwendung eine Toolbar mit vordefinierten Buttons (Drucken, Speichern, Seitenvorschau usw.) fertig, die funktioniert auch wunderbar, soweit ich das beurteilen kann, auch wenn ich einige teile immer noch nicht verstehe. Meine Frage ist nun wie ich nun eigene Bitmaps verwenden kann. Ich habe es mal mit LoadImage versucht aber es klappt nicht hier ist mein versuchter Code bitte postet mal was falsch ist und was man besser machen kann:
HWND CreateToolbar (HWND hWindow)
{
HWND toolbar;
HIMAGELIST mi;
INITCOMMONCONTROLSEX mc;
//Struktur initialisieren
memset (&mc, 0, sizeof (INITCOMMONCONTROLSEX));
mc.dwSize = sizeof (INITCOMMONCONTROLSEX);
mc.dwICC = ICC_BAR_CLASSES | ICC_WIN95_CLASSES;
//Common Dialog initialisieren
InitCommonControlsEx (&mc);
//Toolbar erzeugen
toolbar = CreateWindowEx (0,
TOOLBARCLASSNAME,
NULL,
WS_CHILD | WS_VISIBLE,
0, 0,
0, 0,
hWindow,
(HMENU) "IDR_TOOLBAR",
hGlobInstance,
NULL);
//Imageslist anlegen
mi = ImageList_Create (16, 16, ILC_COLOR24, 0, 12);
//Bilder in Imagesliste transferieren
ImageList_Add(mi, LoadBitmap(hGlobInstance, MAKEINTRESOURCE("IDB_BITMAP1")),NULL);
//initialisierung durch Initialisierungsliste
TBBUTTON toolbutton [] =
{
{STD_FILENEW, IDM_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //Neu
{STD_FILEOPEN, IDM_LOAD, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //Laden
{STD_PRINT, IDM_PRINT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //Drucken
{STD_FILESAVE, IDM_SAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //Speichern
{STD_COPY, IDM_COPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //Kopieren
{STD_DELETE, IDM_DELETE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //Löschen
{STD_PASTE, IDM_PASTE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //Einfügen
{STD_CUT, IDM_CUT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //Hinstory
{STD_FIND, IDM_FIND, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //find
{STD_HELP, IDM_HELP, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //Hilfe
{STD_PRINTPRE , IDM_PRINTVIEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //Konsole
{STD_PROPERTIES, IDM_PROPERTY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //Programm beenden
{STD_REDOW, IDM_REDOW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //wiederholen
{STD_REPLACE, IDM_REPLACE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //weitersuchen
{STD_UNDO, IDM_UNDO, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //rückgängig
{IDB_BITMAP1, IDM_CONSOLE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, //Konsole
//{}, //userinformation
//{}, //Exit
//{}, //Verbinden
//{} //trennen
};
//Button anzeigen
SendMessage(toolbar, TB_SETIMAGELIST, 0, (LPARAM) mi);
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[0]); //neu
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[1]); //laden
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[2]); //drucken
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[3]); //speichern
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[4]); //Kopieren
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[5]); //Löschen
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[6]); //einfügen
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[7]); //ausschneiden
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[8]); //finden
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[9]); //hilfe
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[10]); //druckvorschau
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[11]); //eigenschaften
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[12]); //wiederholen
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[13]); //weitersuchen
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM) (LPTBBUTTON) &toolbutton[14]); //rückgängig
SendMessage (toolbar, TB_INSERTBUTTON, 0, (LPARAM)(LPTBBUTTON) &toolbutton[15]); //Konsole
// Send the TB_BUTTONSTRUCTSIZE message, which is required for backward compatibility.
SendMessage(toolbar, TB_BUTTONSTRUCTSIZE, (WPARAM) sizeof (TBBUTTON), 0);
//Bitmapstruktur anlegen
TBADDBITMAP mybit;
memset (&mybit, 0, sizeof (TBADDBITMAP));
mybit.hInst = HINST_COMMCTRL;
mybit.nID = IDB_STD_SMALL_COLOR ;
TBADDBITMAP dabit;
HBITMAP mybitmap = (HBITMAP) LoadImage (0,
"icons.bmp",
IMAGE_BITMAP,
0,0,
LR_LOADFROMFILE | LR_DEFAULTSIZE | LR_CREATEDIBSECTION);
memset (&dabit, 0, sizeof (TBADDBITMAP));
dabit.hInst = NULL;
dabit.nID = (UINT) mybitmap;
int n = SendMessage (toolbar, TB_ADDBITMAP, 0, (LPARAM) &mybit);
n = SendMessage (toolbar, TB_ADDBITMAP, 1, (LPARAM) &dabit);
//Fensterhandle zurückliefern
return toolbar;
}
auch wenn der Code schon länger geworden ist danke ich euch schonmal für eure Hilfe. Achja, auf Kommentare wie nerv nicht oder du bist ja so schlecht kann ich verzichten, für kontruktive Kritik bin ich immer offen.
Müssen die Bitmaps eigendlich eine Abmessung von 16x16 Pixel haben oder ist das egal?! was passiert wenn sie nicht auf den Button passen (zu groß oder zu klein sind) werden sie dann trotzdem angezeigt oder nicht?
Vielen Dank schonmal im Vorraus.
Cu Para