Toolbar mit 256 Farben

Hallo an alle, ich möchte in meine Anwendung eine Toolbar einbauen, die Symbole mit 256 Farben beinhaltet.
Da arbeitet mir aber die
C++:
m_wndToolBar.LoadToolBar()
entgegen.

Wie kann man es bewerkstelligen dass in der Toolbar 256 Farben angezeigt werden?
Ich arbeite mit MS Visual Studio 2005.

Habe schon auf codezone und codeguru nachgeschaut aber nur uralte Anleitungen gefunde, die alle nicht funktionieren. (Fehler wie "Failed to create empty document".)

mfg DR
 
Dankeschön aber irgendwie klappt das net, die Toolbar zeigt keine Veränderung:

Dekliration in mainframe.h:
C++:
...
CToolBar   m_Toolbar;
CImageList *pImageList; 
CBitmap bmp;
...

in OnCreate in mainframe.cpp:
C++:
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
	return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP	| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
         TRACE0("Symbolleiste konnte nicht erstellt werden\n");
	return -1;      // Fehler bei Erstellung
}

if (!m_wndStatusBar.Create(this) ||!m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)))
{
	TRACE0("Statusleiste konnte nicht erstellt werden\n");
	return -1;      // Fehler bei Erstellung
}
// TODO: Löschen Sie diese drei Zeilen, wenn Sie nicht möchten, dass die Systemleiste andockbar ist
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);

//Eigener Code:

pImageList=m_wndToolBar.GetToolBarCtrl().GetImageList();
pImageList->DeleteImageList();

bmp.LoadBitmap(IDB_TOOLBARHI);
pImageList->Create(320, 15, ILC_MASK | ILC_COLOR24, 28, 0);
pImageList->Add(&bmp,RGB(255,0,255));
m_toolBar.GetToolBarCtrl().SetImageList(pImageList);

return 0;

Und wenn ich zeile 28 durch
C++:
m_wndToolBar.GetToolBarCtrl().SetImageList(pImageList);

ersetze bleibt die Toolbar größenteils grau, und es lässt sich keinerlei Interaktion vornehmen.

Was mache ich falsch?

mfg DR
 
Beim Erzeugen der Image-List wird die Breite/Höhe für die Bildgröße pro Button angegeben. Die Höhe (15) wäre dann wohl ok und die Breite wäre dann Gesambreite/Anzahl (320/28), was allerdings bei deinen Werten ein krummes Ergebnis ergibt. Bei 256 Farben würde dann auch der Parameter-Wert "ILC_COLOR8" zutreffen.
Ein neues Toolbar-Objekt brauchst du nicht zu deklarieren. Das Bitmap wird bei dem vorhandenen "m_wndToolBar" ausgetauscht.
C++:
pImageList->Create(15 /* ? */, 15, ILC_MASK | ILC_COLOR8, 28 /* ? */, 0);
pImageList->Add(&bmp,RGB(255,0,255));
m_wndToolBar.GetToolBarCtrl().SetImageList(pImageList);
Gruß
MCoder
 
Ok thx,
die Toolbar wird nun angezeigt, jedenfalls die Buttons mit 16 Farben(die auch mit der normalen Toolbar identisch sind), die anderen bleiben grau und bieten keine Interaktionsmöglichkeit...

C++:
pImageList->Create(16, 15, ILC_MASK | ILC_COLOR8, 20, 0);

Irgendwas klappt noch nicht.

mfg DR
 
Also die Buttons in der Toolbar werden nur dann korrekt angezeigt, wenn sie aktiv sind.Wenn sie inaktiv sind, sehen sie nicht blass, sondern dann ist die ganze Fläche völlig grau,aber nur bei den Farben die nicht in den normalen 16 Farben enthalten sind, woran liegt das? :confused:

mfg DR
 
Zuletzt bearbeitet:
Also die Buttons in der Toolbar werden nur dann korrekt angezeigt, wenn sie aktiv sind.Wenn sie inaktiv sind, sehen sie nicht blass, sondern dann ist die ganze Fläche völlig grau,aber nur bei den Farben die nicht in den normalen 16 Farben enthalten sind, woran liegt das? :confused:
mfg DR

Du musst analog zur normalen Image-List noch eine für inaktive Buttons festlegen. Dafür gibt es die Member "GetDisabledImageList()" bzw. "SetDisabledImageList()".

Gruß
MCoder
 

Neue Beiträge

Zurück