Bitmaps und Icons auf Buttons anzeigen


Als letzten Schritt wollen wir einen zweiten Button mit einer Bitmap versehen. Ein solcher Button wird auf die selbe Art wie ein normaler Button erzeugt. Neu ist nur das Stilattribut BS_BITMAP (für Bitmaps) bzw. BS_ICON (für Symbole):

hwndBmpButton := CreateWindowEx(0, 'BUTTON', 'Button', WS_VISIBLE or
  WS_CHILD or {neuer Stil ->} BS_BITMAP, 45, 60, 100, 25, hWnd, IDC_BMPBUTTON,
  hInstance, nil);

Um die Bitmap aus den Programmressourcen zu laden, benutzen wir LoadBitmap, die als Parameter das Instanzenhandle und den Namen der Ressource erwartet:

hwndBMP := LoadBitmap(hInstance, MAKEINTRESOURCE(101));

Rückgabewert dieser Funktion ist ein Handle auf die Bitmap.

Ein Icon wird auf ähnliche Weise geladen, wobei man hier auch noch den Vorteil hat, transparente Grafiken nutzen zu können. Allerdings sollten Sie hier die Funktion LoadImage verwenden. Das folgende Beispiel zeigt, wie man ein 16x16 großes Icon lädt:

hwndICO := LoadImage(hInstance,MAKEINTRESOURCE(101),IMAGE_ICON,
  16,16,LR_DEFAULTCOLOR);


Bitmap oder Icon werden dann mit der Nachricht "BM_SETIMAGE" auf dem Button platziert:

SendMessage(hwndBmpButton, BM_SETIMAGE, IMAGE_BITMAP, hwndBMP);

Im wParam-Parameter geben Sie an, ob das Bild eine Bitmap (IMAGE_BITMAP) oder ein Symbol (IMAGE_ICON) ist. Das Handle der Bitmap, bzw. des Icons wird im letzten Parameter angegeben.

Im Beispielprogramm kann mit Hilfe eines Compilerschalters entschieden werden, ob der Button eine Bitmap oder ein Icon verwenden soll.