Platta rullningslister
Microsoft Internet Explorer 4.0 introducerade en ny visuell teknik som kallas platta rullningslister. Funktionellt fungerar platta rullningslister precis som vanliga rullningslister. Skillnaden är att du kan anpassa deras utseende i större utsträckning än vanliga rullningslister.
Följande bild visar ett fönster som innehåller en platt rullningslist.
Not
Platta rullningslister stöds av Comctl32.dll version 4.71 till 5.82. Comctl32.dll version 6.00 och senare stöder inte platta rullningslister.
Använda platta rullningslister
I det här avsnittet beskrivs hur du implementerar platta rullningslister i ditt program.
Innan du börjar
Om du vill använda de platta rullningslistfunktionerna måste du inkludera Commctrl.h i källfilerna och länka till Comctl32.lib.
Lägga till platta rullningslister i ett fönster
Om du vill lägga till platta rullningslister i ett fönster anropar du InitializeFlatSBoch skickar handtaget till fönstret. I stället för att använda standardfunktionerna för rullningslister för att ändra rullningslisterna måste du använda motsvarande FlatSB_XXX funktion. Det finns platta rullningslistfunktioner för att ställa in och hämta rullningsinformation, intervall och position. Om platta rullningslister inte har initierats för ditt fönster kommer API:et för platt rullningslist att skjutas upp till motsvarande standardfunktioner, om några används. På så sätt kan du aktivera och inaktivera platta rullningslister utan att behöva skriva villkorsstyrd kod.
Eftersom ett program kan ha angett anpassade mått för sina platta rullningslister uppdateras de inte automatiskt när systemmåtten ändras. När måtten för systemrullningslisten ändras sänds ett WM_SETTINGCHANGE meddelande med dess wParam- inställt på SPI_SETNONCLIENTMETRICS. Om du vill uppdatera platta rullningslister till de nya systemmåtten måste programmen hantera det här meddelandet och uttryckligen ändra den platta rullningslistens måttberoende egenskaper.
Om du vill uppdatera rullningslistens egenskaper använder du FlatSB_SetScrollProp. Följande kodfragment ändrar en platt rullningslists måttberoende egenskaper till de aktuella systemvärdena.
void FlatSB_UpdateMetrics(HWND hWnd)
{
FlatSB_SetScrollProp(hWnd, WSB_PROP_CXVSCROLL, GetSystemMetrics(SM_CXVSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CXHSCROLL, GetSystemMetrics(SM_CXHSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CYVSCROLL, GetSystemMetrics(SM_CYVSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CYHSCROLL, GetSystemMetrics(SM_CYHSCROLL), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CXHTHUMB, GetSystemMetrics(SM_CXHTHUMB), FALSE);
FlatSB_SetScrollProp(hWnd, WSB_PROP_CYVTHUMB, GetSystemMetrics(SM_CYVTHUMB), TRUE);
}
Förbättra platta rullningslister
FlatSB_SetScrollProp gör att du kan ändra de platta rullningslisterna för att anpassa utseendet på ditt fönster. För lodräta rullningslister kan du ändra bredden på stapeln och höjden på riktningspilarna. För vågräta rullningslister kan du ändra höjden på stapeln och bredden på riktningspilarna. Du kan också ändra bakgrundsfärgen för både vågräta och lodräta rullningslister.
FlatSB_SetScrollProp kan du också anpassa hur de platta rullningslisterna visas. Genom att ändra egenskaperna WSB_PROP_VSTYLE och WSB_PROP_HSTYLE kan du ange vilken typ av rullningslist som du vill använda. Det finns tre tillgängliga formatmallar.
Stil | Beskrivning |
---|---|
FSB_ENCARTA_MODE | En vanlig platt rullningslist visas. När musen rör sig över en riktningsknapp eller tummen visas den delen av rullningslisten i 3D. |
FSB_FLAT_MODE | En vanlig platt rullningslist visas. När musen flyttas över en riktningsknapp eller tummen visas den delen av rullningslisten i inverterade färger. |
FSB_REGULAR_MODE | En normal rullningslist utan rullningslist visas. Inga särskilda visuella effekter kommer att tillämpas. |
Ta bort platta rullningslister
Om du vill ta bort platta rullningslister från fönstret anropar du funktionen UninitializeFlatSB och skickar handtaget till fönstret. Den här funktionen tar bara bort platta rullningslister från fönstret vid körning. Du behöver inte anropa den här funktionen när fönstret förstörs.