Verwenden von Hot-Tracking mit Symbolleisten

Wenn ein Mauszeiger auf einem Element bewegt wird, wird das Element heiß. Wenn hot-tracking aktiviert ist, wird das heiße Element hervorgehoben. Eine Symbolleiste, die mit der TBSTYLE_FLAT-Formatvorlage erstellt wird, oder eine Symbolleiste, die visuelle Stile verwendet, unterstützt standardmäßig hot-tracking.

Hottracking erfordert, dass Sie Imagelisten erstellen. Daher können Sie die TB_ADDBITMAP-Meldung oder die CreateToolbarEx-Funktion nicht verwenden, um Die Symbolleiste zu erstellen.

Wenn die Maus über eine Symbolleistenschaltfläche bewegt wird, wird die Schaltfläche so umrissen, dass sie hervorgehoben wird. Die folgende Abbildung zeigt eine Symbolleiste mit aktiviertem Hottracking; Der Mauszeiger bewegte sich auf die Schaltfläche Speichern, als der Screenshot erstellt wurde.

Screenshot eines Dialogfelds mit einer Symbolleiste mit drei Elementen; Das ausgewählte Symbol ist umrissen.

Wenn sich die Bitmap einer Symbolleistenschaltfläche ändern soll, wenn sich der Zustand des Steuerelements ändert, speichern Sie die verschiedenen Bilder in Bildlisten. Beispielsweise verfügen einige Anwendungen über schwarzweiße Symbolleistenschaltflächen, die farblich angezeigt werden, wenn sie ausgewählt werden. Die beiden verschiedenen Bilder werden in Bildlisten gespeichert. Symbolleisten unterstützen die Verwendung von bis zu drei Bildlisten. In der Regel verfügt eine Anwendung über eine Standard-, Deaktiviert- und Hot-Tracking-Liste von Bildern. Verwenden Sie zum Festlegen und Abrufen von Bildlisten für Schaltflächen in der heißen Symbolleiste die TB_SETHOTIMAGELIST und TB_GETHOTIMAGELIST Nachrichten.

Wichtige Informationen

Technologien

Voraussetzungen

  • C/C++
  • Programmierung der Windows-Benutzeroberfläche

Anweisungen

Verwenden Hot-Tracking mit einer Symbolleiste

Im folgenden Codebeispiel wird eine Bildliste für Hotbuttons erstellt, ausgefüllt und zugewiesen.

// Create the image list, himlHot.
g_himlHot = ImageList_Create(MYICON_CX,MYICON_CY,ILC_COLOR8,0,4);

// Load a bitmap from a resource file, and add the images to the image list.
// Note that the bitmap contains four images.

hBitmapHot = LoadBitmap(g_hinst, MAKEINTRESOURCE(IDB_HOT));

ImageList_Add(g_himlHot, hBitmapHot, NULL);
   
// Set the image list. 
SendMessage(hwndTB, TB_SETHOTIMAGELIST, 0, (LPARAM)g_himlHot);
   
// Loop to fill the array of TBBUTTON structures.  
for(i=0;i<MAX_BUTTONS;i++)
{
    tbArray[i].iBitmap   = i;                   // Bitmap from image list.
    tbArray[i].idCommand = IDM_BUTTONSTART + i;
    tbArray[i].fsState   = TBSTATE_ENABLED;
    tbArray[i].fsStyle   = BTNS_DROPDOWN;
    tbArray[i].dwData    = 0;
    tbArray[i].iString   = i;
}

DeleteObject(hBitmapHot);    // Delete the loaded bitmap.

Verwenden von Symbolleistensteuerelementen

Demo zu allgemeinen Windows-Steuerelementen (CppWindowsCommonControls)