E
Klar geht das einfach, wurde bereits erwähnt. Ich empfehle dennoch FooButton, weil meistens mehr dazu kommt (Text, Anklicken, JPG, ...).
Die Klasse FooButton - in der Member-Funktion DrawBitmap(...) so abgeändert, dass diese nicht nur aus Ressourcen, sondern auch von extern BMP, JPG, TIF ... laden kann - ist ein variables Tool. Man kann FooButton auch statisch schalten, so dass die visuelle Button-Fkt. (Bild verschieben) nicht wirkt.
Hier ein Ausschnitt der von mir vorgeschlagenen Änderungen in FooButton::drawBitmap(...): (gdi+ einbinden wegen "Bitmap")
//! Draws the button's bitmap
void FooButton::drawBitmap
(CDC* pDC,
LPDRAWITEMSTRUCT lpDrawItemStruct,
int& nBitmapRightEdge)
{
ASSERT (pDC != NULL);
ASSERT (lpDrawItemStruct != NULL);
// Load bitmap - return if unable
nBitmapRightEdge = 0;
if (m_BitmapFile == "")
return;
HBITMAP hBitmap;
Bitmap b (m_BitmapFile.AllocSysString()); // GDI+ (von extern JPG, ...)
b.GetHBITMAP(Color::White, &hBitmap);
// So kann man nur(!) BMP extern laden:
// HBITMAP hBitmap = (HBITMAP) ::LoadImage (NULL, m_BitmapFile, IMAGE_BITMAP, 0, 0,LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE );
// So kann man BMP als Ressource laden:
// HBITMAP hBitmap = ::LoadBitmap (AfxGetResourceHandle(), MAKEINTRESOURCE (m_nBitmapId));
//...
Nur ein gut gemeinter Tipp.
Einfach mal anschauen:
http://www.codeproject.com/buttonctrl/FooButton.asp