Over besturingselementen voor de trackbar
Een schuifbalk is een venster met een schuifregelaar (ook wel een duimgreep genoemd) in een kanaal en optionele streepmarkeringen. Wanneer de gebruiker de schuifregelaar verplaatst met behulp van de muis of de richtingstoetsen, verzendt de trackbar meldingsberichten om de wijziging aan te geven.
- Selectie Bereik
- berichten van de trackbar
- Trackbar Kennisgevingsberichten
- Standaard schuifbalk berichtverwerking
- Tooltips voor schuifbalk
Trackbars zijn handig als u wilt dat de gebruiker een discrete niet-ondertekende geheel getalwaarde of een reeks opeenvolgende niet-ondertekende gehele getallen in een bereik selecteert. U kunt bijvoorbeeld een schuifbalk gebruiken om de gebruiker de herhalingsfrequentie van het toetsenbord in te laten stellen door de schuifregelaar naar een bepaald maatstreepje te verplaatsen. In de volgende afbeelding ziet u een typische trackbar.
De schuifregelaar in een trackbar wordt verplaatst in stappen die u opgeeft wanneer u deze maakt. De waarden in dit bereik worden logische eenheden genoemd. Als u bijvoorbeeld opgeeft dat de trackbar logische eenheden moet hebben die variëren van 0 tot 5, kan de schuifregelaar slechts zes posities innemen: een positie aan de linkerkant van de trackbar en één positie voor elke stap in het bereik. Normaal gesproken wordt elk van deze posities geïdentificeerd met een maatstreepje; Het aantal maatstreepjes is echter willekeurig en kan kleiner zijn dan het aantal logische posities.
U maakt een trackbar met behulp van de functie CreateWindowEx, waarbij u de TRACKBAR_CLASS-vensterklasse opgeeft. Nadat u een trackbar hebt gemaakt, kunt u trackbar-berichten gebruiken om veel eigenschappen in te stellen en op te halen. Wijzigingen die u kunt aanbrengen, zijn onder andere het instellen van de minimum- en maximumpositie voor de schuifregelaar, het tekenen van maatstreepjes, het instellen van een selectiebereik en het verplaatsen van de schuifregelaar.
Selectiebereik
Als u een trackbar maakt met de stijl TBS_ENABLESELRANGE, kunt u een selectiebereik opgeven. De trackbar markeert het selectiebereik en toont driehoekige maatstreepjes aan het begin en einde, zoals te zien is in de volgende afbeelding.
Het selectiebereik van de trackbar heeft geen invloed op de functionaliteit ervan. Het is aan de toepassing om het bereik te implementeren. U kunt dit op een van de volgende manieren doen:
- Gebruik een selectiebereik om de gebruiker in staat te stellen maximum- en minimumwaarden in te stellen voor een bepaalde parameter. De gebruiker kan bijvoorbeeld de schuifregelaar naar een positie verplaatsen en vervolgens op een knop met het label Max klikken. De toepassing stelt vervolgens het selectiebereik in om de waarden weer te geven die door de gebruiker zijn gekozen.
- Beperk de verplaatsing van de schuifregelaar tot een vooraf bepaald subbereik binnen het besturingselement door de melding WM_HSCROLL of WM_VSCROLL te verwerken en de verplaatsing buiten het selectiebereik ongedaan te maken. U kunt dit bijvoorbeeld doen als het bereik van waarden dat beschikbaar is voor de gebruiker kan veranderen vanwege andere keuzes die de gebruiker heeft gemaakt of op basis van beschikbare resources.
Trackbar-berichten
De logische eenheden van een trackbar zijn de set aaneengesloten waarden die de trackbar kan vertegenwoordigen. Ze worden meestal gedefinieerd door het bereik van mogelijke waarden op te geven met een TBM_SETRANGE bericht zodra de trackbar is gemaakt. Toepassingen kunnen het bereik dynamisch wijzigen met behulp van TBM_SETRANGE, TBM_SETRANGEMAXof TBM_SETRANGEMIN.
Gebruik het TBM_GETPOS bericht om de positie van de schuifregelaar op te halen (dat wil gezegd de waarde die de gebruiker heeft gekozen). Als u de positie van de schuifregelaar wilt instellen, gebruikt u het TBM_SETPOS bericht.
In een trackbar worden automatisch markeringen aan het begin en einde weergegeven, tenzij u de stijl TBS_NOTICKS opgeeft. (In de Microsoft Visual Studio resource-editor betekent dit dat de eigenschap Maatstreepjes wordt ingesteld op False.) U kunt de stijl TBS_AUTOTICKS gebruiken om automatisch extra maatstreepjes op regelmatige afstanden op de schuifbalk weer te geven. Standaard geeft een TBS_AUTOTICKS trackbar een markering weer op elke stap binnen het bereik van de trackbar. Als u een ander interval wilt instellen voor de automatische maatstreepjes, stuurt u het bericht TBM_SETTICFREQ naar de trackbar. U kunt dit bericht bijvoorbeeld gebruiken om slechts 10 markeringen weer te geven in een bereik van 1 tot en met 100.
Stel de positie van één enkel maatstreepje in door het TBM_SETTIC bericht te verzenden. Een trackbar onderhoudt een matrix met DWORD-waarden waarmee de positie van elk maatstreepje wordt opgeslagen. De array bevat niet de eerste en laatste markeringen, die automatisch door de trackbar worden gemaakt. U kunt een index in deze matrix opgeven wanneer u het TBM_GETTIC bericht verzendt om de positie van het bijbehorende maatstreepje op te halen. U kunt ook het TBM_GETPTICS bericht verzenden om een aanwijzer naar de matrix op te halen. Het aantal elementen in de matrix is gelijk aan twee minder dan het aantal tikken dat wordt geretourneerd door het TBM_GETNUMTICS bericht. Dit komt doordat het aantal dat wordt geretourneerd door TBM_GETNUMTICS de eerste en laatste verdelingsstreepjes bevat, die niet zijn opgenomen in de array. Als u de fysieke positie van een maatstreepje wilt ophalen, verzendt u het TBM_GETTICPOS bericht in clientcoördinaten van het venster van de trackbar. Het TBM_CLEARTICS bericht verwijdert alle markeringen op de schuifbalk behalve de eerste en de laatste.
De lijngrootte van een trackbar bepaalt hoe ver de schuifregelaar wordt verplaatst als reactie op de invoer van de pijltoetsen op het toetsenbord, zoals de RECHTSPIJL- of OMLAAG-PIJL-toets. Als u de lijngrootte wilt ophalen of instellen, verzendt u de TBM_GETLINESIZE en TBM_SETLINESIZE berichten. De trackbar verzendt ook de TB_LINEUP en TB_LINEDOWN meldingscodes naar het bovenliggende venster wanneer de gebruiker op de pijltoetsen drukt.
Het paginaformaat van een trackbar bepaalt hoe ver de schuifregelaar wordt verplaatst als reactie op toetsenbordinvoer, zoals de toets PAGE UP of PAGE DOWN, of muisinvoer, zoals klikken in het trackbar-kanaal. Als u het paginaformaat wilt ophalen of instellen, verzendt u de TBM_GETPAGESIZE en TBM_SETPAGESIZE berichten. De trackbar verzendt ook de TB_PAGEUP- en TB_PAGEDOWN meldingscodes naar het bovenliggende venster wanneer er toetsenbord- of muisinvoer wordt ontvangen die door de pagina schuift. Zie Trackbar Notification Messagesvoor meer informatie.
Een toepassing kan berichten verzenden om de afmetingen van een trackbar op te halen. Het TBM_GETTHUMBRECT bericht haalt de begrenzingsrechthoek voor de schuifbalk op. Het TBM_GETTHUMBLENGTH bericht haalt de lengte van de schuifregelaar op. Het TBM_GETCHANNELRECT bericht haalt de omgrenzingsrechthoek voor het kanaal van de trackbar op, wat het gebied is waarover de schuifregelaar beweegt. Het bevat de highlight wanneer een bereik is geselecteerd. Als een trackbar de stijl TBS_FIXEDLENGTH heeft, kunt u het TBM_SETTHUMBLENGTH bericht verzenden om de lengte van de schuifregelaar te wijzigen.
U kunt het selectiebereik ophalen of instellen door berichten naar de trackbar te verzenden. Gebruik het TBM_SETSEL bericht om de begin- en eindposities van een selectie in te stellen. Als u alleen de beginpositie of alleen de eindpositie van een selectie wilt instellen, verzendt u een TBM_SETSELSTART of TBM_SETSELEND bericht. Als u de begin- of eindposities van een selectiebereik wilt ophalen, verzendt u een TBM_GETSELSTART of TBM_GETSELEND bericht. Als u een selectiebereik wilt wissen en de trackbar wilt herstellen naar het oorspronkelijke bereik, verzendt u het TBM_CLEARSEL bericht.
Notitie
Het is de verantwoordelijkheid van de toepassing om ervoor te zorgen dat de gebruiker geen waarden buiten het selectiebereik kan selecteren. Het besturingselement zelf voorkomt niet dat de gebruiker de schuifregelaar buiten het bereik verplaatst.
Meldingsberichten van de trackbar
Een trackbar informeert het bovenliggende venster over gebruikersacties door een WM_HSCROLL of WM_VSCROLL bericht te verzenden. Met een trackbar met de stijl TBS_HORZ worden WM_HSCROLL berichten verzonden. Met een trackbar met de stijl TBS_VERT worden WM_VSCROLL berichten verzonden. Het woord in lage volgorde van de wParam parameter van WM_HSCROLL of WM_VSCROLL bevat de meldingscode. Voor de TB_THUMBPOSITION- en TB_THUMBTRACK meldingscodes geeft het woord in hoge volgorde van de parameter wParam de positie van de schuifregelaar op. Voor alle andere meldingscodes is het woord in hoge volgorde nul; verzend het TBM_GETPOS bericht om de schuifregelaarpositie te bepalen. De parameter lParam is de ingang voor de trackbar.
Het systeem verzendt de TB_BOTTOM, TB_LINEDOWN, TB_LINEUP en TB_TOP meldingscodes alleen wanneer de gebruiker met een trackbar communiceert met behulp van het toetsenbord. De TB_THUMBPOSITION- en TB_THUMBTRACK meldingscodes worden alleen verzonden wanneer de gebruiker de muis gebruikt. De TB_ENDTRACK, TB_PAGEDOWN en TB_PAGEUP meldingscodes worden in beide gevallen verzonden. De volgende tabel bevat de trackbar-meldingscodes en de gebeurtenissen (virtuele-sleutelcodes of muis-gebeurtenissen) die ervoor zorgen dat de Virtual-Key Codesmeldingen worden verzonden.
Meldingscode | Verzonden reden |
---|---|
TB_BOTTOM | VK_END |
TB_ENDTRACK | WM_KEYUP (de gebruiker heeft een sleutel vrijgegeven die een relevante virtuele-sleutelcode heeft verzonden) |
TB_LINEDOWN | VK_RIGHT of VK_DOWN |
TB_LINEUP | VK_LEFT of VK_UP |
TB_PAGEDOWN | VK_NEXT (de gebruiker heeft op het kanaal onder of rechts van de schuifregelaar geklikt) |
TB_PAGEUP | VK_PRIOR (de gebruiker heeft op het kanaal boven of links van de schuifregelaar geklikt) |
TB_THUMBPOSITION | WM_LBUTTONUP volgend op een meldingscode voor TB_THUMBTRACK |
TB_THUMBTRACK | Schuifregelaarverplaatsing (de gebruiker heeft de schuifregelaar gesleept) |
TB_TOP | VK_HOME |
Standaardverwerking van trackbar-berichten
In deze sectie wordt de verwerking van vensterberichten beschreven die door een trackbar worden uitgevoerd.
Bericht | Verwerking uitgevoerd |
---|---|
WM_CAPTURECHANGED | Hiermee wordt de timer uitgeschakeld als deze is ingesteld tijdens WM_LBUTTONDOWN verwerking en verzendt indien nodig de TB_THUMBPOSITION melding code. De TB_ENDTRACK meldingscode wordt altijd verzonden. |
WM_CREATE | Voert extra initialisatie uit, zoals het instellen van het lijnformaat, de paginagrootte en de maatstreepjesfrequentie op standaardwaarden. |
WM_DESTROY | Maakt bronnen vrij. |
WM_ENABLE | Hiermee wordt het venster van de trackbar opnieuw geschilderd. |
WM_ERASEBKGND | Hiermee wordt de achtergrond van het venster gewist met behulp van de huidige achtergrondkleur voor de trackbar. |
WM_GETDLGCODE | Retourneert de DLGC_WANTARROWS-waarde. |
WM_KEYDOWN | Hiermee worden de richtingssleutels verwerkt en worden de meldingscodes TB_TOP, TB_BOTTOM, TB_PAGEUP, TB_PAGEDOWN, TB_LINEUP en TB_LINEDOWN verzonden. |
WM_KEYUP | Hiermee wordt de TB_ENDTRACK meldingscode verzonden als de sleutel een van de richtingsleutels was. |
WM_KILLFOCUS | Hiermee wordt het venster van de trackbar opnieuw geschilderd. |
WM_LBUTTONDOWN | Hiermee stelt u de focus en de muisopname in op de trackbar. Indien nodig wordt een timer ingesteld die bepaalt hoe snel de schuifregelaar naar de muiscursor gaat wanneer de gebruiker de muisknop in het venster ingedrukt houdt. |
WM_LBUTTONUP | Laat de muisopname los en beëindigt de timer als deze is ingesteld tijdens WM_LBUTTONDOWN verwerking. De TB_THUMBPOSITION meldingscode wordt, indien nodig, verzonden. De TB_ENDTRACK meldingscode wordt altijd verzonden. |
WM_MOUSEMOVE | Hiermee verplaatst u de schuifregelaar en verzendt u de TB_THUMBTRACK meldingscode wanneer de muis wordt gevolgd (zie WM_TIMER). |
WM_PAINT | Schildert de trackbar. Als de parameter wParam niet null is, gaat het besturingselement ervan uit dat de waarde een HDC is en verft met behulp van die apparaatcontext. |
WM_SETFOCUS | Hiermee wordt het venster van de trackbar opnieuw geschilderd. |
WM_SIZE | Hiermee stelt u de afmetingen van de trackbar in en verwijdert u de schuifregelaar als er onvoldoende ruimte is om deze weer te geven. |
WM_TIMER | Haalt de muispositie op en werkt de positie van de schuifregelaar bij. (Deze wordt alleen ontvangen wanneer de gebruiker de schuifregelaar sleept.) |
WM_WININICHANGE | Initialiseert schuifregelaardimensies. |
Knopinfo bijhouden
Een trackbar die is gemaakt met de stijl TBS_TOOLTIPS heeft een standaard tooltipelement. De tooltip blijft zichtbaar en geeft de huidige waarde weer terwijl de gebruiker de schuifregelaar sleept met de muis.
U kunt een nieuwe knoptekstcontrole toewijzen aan een trackbar door het TBM_SETTOOLTIPS bericht te verzenden. Als u het handvat wilt ophalen naar een toegewezen tooltipcontrole, gebruikt u het TBM_GETTOOLTIPS bericht.