Kombinationsrutefunktioner
I det här dokumentet beskrivs funktionerna i kombinationsrutan. Mer information finns i följande avsnitt:
Specialfunktioner
Det finns särskilda meddelanden och funktioner som gör det möjligt för ett program att visa en kataloglista i en kombinationsruta, associera data med listobjekt i en kombinationsruta och ändra tangentbordsgränssnittet för en listruta eller listruta.
Kataloglistor
Ett program kan lägga till namnen på filer eller underkataloger i en kombinationsruta genom att skicka meddelandet CB_DIR till den. Parametern wParam för det här meddelandet anger attributen för de filer som ska läggas till och parametern lParam är en pekare till textsträngen som definierar filspecifikationen.
Du kan använda funktionen DlgDirListComboBox för att ersätta innehållet i en kombinationsruta i en dialogruta. Funktionen fyller kombinationsrutan med namnen på enheter, kataloger och filer som matchar en angiven uppsättning villkor. Funktionen DlgDirSelectComboBoxEx hämtar den aktuella markeringen i en kombinationsruta som initierats av DlgDirListComboBox. Dessa funktioner gör det möjligt för användaren att välja en enhet, katalog eller fil från en kombinationsruta utan att skriva filens plats och namn.
Funktionerna DlgDirListComboBox och DlgDirSelectComboBoxEx och CB_DIR-meddelandet liknar DlgDirList och DlgDirSelectEx funktioner och det LB_DIR meddelande som används med listrutor.
Data som är associerade med listobjekt
Ett program kan associera data med listobjekten i en kombinationsruta. Meddelandet CB_SETITEMDATA associerar ett DWORD- värde med ett listobjekt och CB_GETITEMDATA hämtar värdet som är associerat med ett listobjekt.
Exemplet i Skapa en ritad kombinationsruta för ägare använder objektdata för att associera en konstant med varje objekt i en listruta. Ett sådant unikt värde identifierar varje objekt oberoende av dess sorterade position.
Andra program kan använda objektdata för att associera en referens eller pekare med ett listobjekt. I så fall kan ett program bearbeta ett WM_DELETEITEM meddelande för att ta bort eller frigöra det angivna objektet när listobjektet tas bort.
Utökat användargränssnitt
Listrutekombinationsrutor och listrutor stöder ett alternativt tangentbordsgränssnitt som kallas utökade användargränssnittet. Som standard öppnar eller stänger F4-tangenten listan och NEDÅTPILen ändrar den aktuella markeringen. I en kombinationsruta med det utökade användargränssnittet inaktiveras dock F4-tangenten och om du trycker på NEDÅTPIL öppnas listrutan. Dessutom har mushjulet, som normalt bläddrar igenom objekten i listan, ingen funktion när det utökade användargränssnittet har angetts.
Om du vill välja användargränssnittet för en kombinationsruta kan ett program skicka meddelandet CB_SETEXTENDEDUI till kombinationsrutan. Ett TRUE- värde för parametern wParam aktiverar det utökade användargränssnittet. värdet FALSE anger standardanvändargränssnittet. För att avgöra om en kombinationsruta använder det utökade användargränssnittet kan ett program skicka meddelandet CB_GETEXTENDEDUI till kombinationsrutan.
Cue-banderoller
Cue-banderoller är en ny funktion i redigeringskontroller och kombinationsrutor. Syftet med en referensbanderoll är att ge användaren ett tips om syftet med en redigeringskontroll eller kombinationsruta. Följande skärmbild visar en redigeringskontroll med referenstexten "Sök".
Texten i en referensbanderoll visas när en redigeringskontroll inte har någon text eller om en kombinationsruta inte har någon markering. När användaren anger text i redigeringskontrollen eller gör en markering i en kombinationsruta försvinner signalbanderollen. Som standard försvinner även referensbanderollen när redigeringskontrollen eller kombinationsrutan får fokus.
Combo Box-meddelanden
Meddelanden från kombinationsrutor skickas som meddelandekoder i form av WM_COMMAND meddelanden. Meddelandekoden lagras i det höga ordet i parametern wParam och ett program kan bearbeta följande kombinationsruteaviseringskoder.
Meddelandekod | Beskrivning |
---|---|
CBN_CLOSEUP | Anger att listan i en nedrullningsbara kombinationsruta eller listruta håller på att stängas. |
CBN_DBLCLK | Anger att användaren har dubbelklickat på ett listobjekt i en enkel kombinationsruta. |
CBN_DROPDOWN | Anger att listan i en nedrullningsbara kombinationsruta eller listruta håller på att öppnas. |
CBN_EDITCHANGE | Anger att användaren har ändrat texten i redigeringskontrollen för en enkel eller nedrullningsbar kombinationsruta. Den här meddelandekoden skickas efter att den ändrade texten visas. |
CBN_EDITUPDATE | Anger att användaren har ändrat texten i redigeringskontrollen för en enkel eller nedrullningsbar kombinationsruta. Den här meddelandekoden skickas innan den ändrade texten visas. |
CBN_ERRSPACE | Anger att kombinationsrutan inte kan allokera tillräckligt med minne för att utföra en begäran, till exempel att lägga till ett listobjekt. |
CBN_KILLFOCUS | Anger att kombinationsrutan håller på att förlora indatafokuset. |
CBN_SELCHANGE | Anger att den aktuella markeringen har ändrats. |
CBN_SELENDCANCEL | Anger att markeringen som gjorts i listrutan, medan den togs ned, ska ignoreras. |
CBN_SELENDOK | Anger att markeringen som gjorts i listrutan, medan den togs ned, ska godkännas. |
CBN_SETFOCUS | Anger att kombinationsrutan har fått indatafokuset. |
Standardbeteende för kombinationsruta
I den här tabellen beskrivs de meddelanden som hanteras specifikt av den fördefinierade combobox-klassfönstrets procedur.
Meddelande | Beskrivning |
---|---|
CB_ADDSTRING | Skickar ett LB_ADDSTRING meddelande till listfönstret för att lägga till ett listobjekt. |
CB_DELETESTRING | Skickar ett LB_DELETESTRING meddelande till listfönstret för att ta bort ett listobjekt. |
CB_DIR | Lägger till filnamnen som matchar de angivna attributen och sökvägen till listan. |
CB_FINDSTRING | Skickar ett LB_FINDSTRING meddelande till listfönstret. Det här meddelandet returnerar indexet för det första listobjektet som börjar med den angivna texten. |
CB_FINDSTRINGEXACT | Skickar ett LB_FINDSTRING meddelande till listfönstret. Det här meddelandet returnerar indexet för det första listobjektet som exakt matchar den angivna texten. |
CB_GETCOUNT | Skickar ett LB_GETCOUNT meddelande till listfönstret. Det returnerar antalet listobjekt. |
CB_GETCURSEL | Skickar ett LB_GETCURSEL meddelande till listfönstret. Det returnerar indexet för det markerade objektet, om det finns. |
CB_GETDROPPEDCONTROLRECT | Fyller den angivna rektangelstrukturen med skärmkoordinaterna i en listruta. |
CB_GETDROPPEDSTATE | Returnerar TRUE- om en listruta är öppen. annars returneras FALSE-. |
CB_GETDROPPEDWIDTH | Returnerar den minsta tillåtna bredden i bildpunkter i listrutan. |
CB_GETEDITSEL | Skickar ett EM_GETSEL meddelande till redigeringskontrollen och returnerar start- och slutpositionen för den aktuella markeringen. I listrutor returnerar fönsterproceduren CB_ERR. |
CB_GETEXTENDEDUI | Returnerar TRUE- om kombinationsrutan är en listruta eller listruta och flaggan utöka användargränssnittet har angetts. annars returneras FALSE-. |
CB_GETHORIZONTALEXTENT | Skickar ett LB_GETHORIZONTALEXTENT meddelande till listfönstret. Den returnerar den rullningsbara bredden i bildpunkter i listrutan. |
CB_GETITEMDATA | Skickar ett LB_GETITEMDATA meddelande till listfönstret. Det returnerar värdet som är associerat med det angivna listobjektet. |
CB_GETITEMHEIGHT | Skickar ett LB_GETITEMHEIGHT meddelande till listfönstret. Den returnerar höjden i bildpunkter för det angivna ägarritade listobjektet. |
CB_GETLBTEXT | Skickar ett LB_GETTEXT meddelande till listfönstret. Den kopierar den angivna listtexten till den angivna bufferten. |
CB_GETLBTEXTLEN | Skickar ett LB_GETTEXTLEN meddelande till listfönstret. Den returnerar längden i TCHARs, för den angivna listtexten. |
CB_GETLOCALE | Skickar ett LB_GETLOCALE meddelande till listfönstret. Den returnerar det aktuella nationella språket för listan. |
CB_GETMINVISIBLE | Hämtar det minsta antalet synliga objekt i listrutan i en kombinationsruta. |
CB_GETTOPINDEX | Skickar ett LB_GETTOPINDEX meddelande till listfönstret. Det returnerar indexet för det första synliga objektet i listrutan. |
CB_INITSTORAGE | Skickar ett LB_INITSTORAGE meddelande till listfönstret. Det initierar utrymme för det angivna antalet objekt och det angivna antalet byte för objektsträngar. |
CB_INSERTSTRING | Skickar ett LB_INSERTSTRING meddelande till listfönstret. Det infogar ett listobjekt på den angivna positionen. |
CB_LIMITTEXT | Skickar ett EM_LIMITTEXT meddelande till redigeringskontrollen. Den anger det maximala antalet tecken som en användare kan ange i redigeringskontrollen. I listrutor returnerar fönsterproceduren CB_ERR. |
CB_RESETCONTENT | Skickar ett LB_RESETCONTENT meddelande till listfönstret och tar bort innehållet i listan. |
CB_SELECTSTRING | Skickar ett LB_SELECTSTRING meddelande till listfönstret. Det väljer det första listobjektet, om det finns, som börjar med tecknen i den angivna texten. |
CB_SETCURSEL | Skickar ett LB_SETCURSEL meddelande till listfönstret och anger den aktuella markeringen. |
CB_SETDROPPEDWIDTH | Anger den minsta tillåtna bredden i bildpunkter i listrutan. |
CB_SETEDITSEL | Skickar ett EM_SETSEL meddelande till redigeringskontrollen. Den väljer det angivna textintervallet. I listrutor returnerar fönsterproceduren CB_ERR. |
CB_SETEXTENDEDUI | Anger eller avmarkerar flaggan för utökat användargränssnitt. Den här flaggan ändrar de nycklar som öppnar och stänger listan i en listruta eller listruta. Om kombinationsrutan är en enkel kombinationsruta returnerar fönsterproceduren CB_ERR. |
CB_SETHORIZONTALEXTENT | Skickar ett LB_SETHORIZONTALEXTENT meddelande till listfönstret. Den anger den rullningsbara bredden i bildpunkter i listrutan. |
CB_SETITEMDATA | Skickar ett LB_SETITEMDATA meddelande till listfönstret. Det associerar det angivna värdet med ett listobjekt. |
CB_SETITEMHEIGHT | Skickar ett LB_SETITEMHEIGHT meddelande till listfönstret. Den anger höjden på det angivna ägarritade listobjektet eller markeringsfältet. |
CB_SETLOCALE | Skickar ett LB_SETLOCALE meddelande till listfönstret och anger det aktuella språket för listan. Nationella inställningar påverkar hur listan sorteras om den har CBS_SORT format och strängar läggs till med hjälp av CB_ADDSTRING. |
CB_SETMINVISIBLE | Anger det minsta antalet synliga objekt i listrutan i en kombinationsruta. |
CB_SETTOPINDEX | Skickar ett LB_SETTOPINDEX meddelande till listfönstret. Den bläddrar i listrutan så att det angivna objektet ligger överst i det synliga intervallet. |
CB_SHOWDROPDOWN | Visar eller döljer listrutan. Det här meddelandet påverkar inte enkla kombinationsrutor. |
WM_CHAR | Bearbetar teckenindata. I listrutor skickas det här meddelandet till listfönstret, som flyttar markeringen till det första objektet som börjar med det angivna tecknet. I enkla och nedrullningsbara kombinationsrutor skickas det här meddelandet till redigeringskontrollen. |
WM_CLEAR | Tar bort redigeringsmarkeringen. I enkla och nedrullningsbara kombinationsrutor bearbetar redigeringskontrollen det här meddelandet. I listrutor returnerar fönsterproceduren CB_ERR. |
WM_COMMAND | Bearbetar meddelanden från redigeringskontrollen och listfönstret och skickar motsvarande aviseringskoder för kombinationsrutor till det överordnade fönstret. |
För redigeringskontrollmeddelanden kan fönsterproceduren uppdatera listfönstrets aktuella val, caret-index och toppindex. För listmeddelanden kan fönsterproceduren uppdatera innehållet i urvalsfältet. | |
WM_COMPAREITEM | Skickar meddelandet till det överordnade fönstret så att programmet kan ange den relativa sorteringspositionen för två ägarritade listobjekt. Kombinationsrutans fönster tar emot det här meddelandet från listfönstret. |
WM_COPY | Kopierar redigeringsmarkeringen till Urklipp. I enkla och nedrullningsbara kombinationsrutor bearbetar redigeringskontrollen det här meddelandet. I listrutor returnerar fönsterproceduren CB_ERR. |
WM_CREATE | Initierar kombinationsrutan. |
WM_CUT | Tar bort redigeringsmarkeringen och placerar den i Urklipp. I enkla och nedrullningsbara kombinationsrutor bearbetar redigeringskontrollen det här meddelandet. I listrutor returnerar fönsterproceduren CB_ERR. |
WM_DELETEITEM | Skickar meddelandet till det överordnade fönstret och meddelar programmet att ett listobjekt har tagits bort. Kombinationsrutans fönster tar emot det här meddelandet från listfönstret. |
WM_DRAWITEM | Skickar meddelandet till det överordnade fönstret så att programmet kan måla det angivna listobjektet. Kombinationsrutans fönster tar emot det här meddelandet från listfönstret. Fönsterproceduren kan också komma från det här meddelandet för att programmet ska måla urvalsfältet i en listruta. |
WM_ENABLE | Anger tillståndet för att aktivera eller förbjuda mus- och tangentbordsinmatning. |
WM_ERASEBKGND | Returnerar 1, vilket anger att bakgrunden raderas. |
WM_GETDLGCODE | Returnerar en kombination av värdena DLG_WANTCHARS och DLGC_WANTARROWS. |
WM_GETFONT | Returnerar handtaget till det aktuella teckensnitt som kombinationsrutan ritar sin text med. |
WM_GETTEXT | Kopierar innehållet i markeringsfältet till den angivna bufferten. I enkla och nedrullningsbara kombinationsrutor bearbetar redigeringskontrollen det här meddelandet. |
WM_GETTEXTLENGTH | Returnerar längden, i tecken, på texten i markeringsfältet. I enkla och nedrullningsbara kombinationsrutor bearbetar redigeringskontrollen det här meddelandet. |
WM_KEYDOWN | Bearbetar tangentbordsindata som inte är förtecken. I listrutor skickas det här meddelandet till listfönstret, som kan visa eller dölja sig själv, eller ändra dess aktuella markering eller caret-index. I enkla och nedrullningsbara kombinationsrutor skickas det här meddelandet till redigeringskontrollen. Redigeringskontrollen skickar vissa nycklar till listfönstret, till exempel UPP- och NEDPIL-tangenterna och F4-nyckeln. |
WM_KILLFOCUS | Döljer markeringen i markeringsfältet och stänger listrutan om det behövs. Om fönstret som tar emot indatafokus är en del av kombinationsrutan (till exempel redigeringskontrollen) ignoreras det här meddelandet. |
WM_LBUTTONDBLCLK | Samma som WM_LBUTTONDOWN. |
WM_LBUTTONDOWN | Ställer in fokus på kombinationsrutan och för listrutekombinationsrutor och listrutor kan du öppna eller stänga listan. Om listan öppnas fångar fönsterproceduren musen för att aktivera markeringen genom att dra och släppa musknappen. |
WM_LBUTTONUP | Släpper musfångsten om musen öppnade listan. |
WM_MEASUREITEM | Skickar meddelandet till det överordnade fönstret så att programmet kan ändra innehållet i den angivna MEASUREITEMSTRUCT- struktur. Kombinationsrutans fönster tar emot det här meddelandet från listfönstret. |
WM_MOUSEMOVE | Skickar meddelandet till listfönstret om musen har öppnat listan och musknappen fortfarande är nere. På så sätt kan en användare välja ett objekt genom att dra pekaren till ett listobjekt och sedan släppa knappen. |
WM_NCCREATE | Allokerar en intern datastruktur som används av kombinationsrutans fönsterprocedur. |
WM_NCDESTROY | Frigör resurser som allokerats som svar på meddelandet WM_NCCREATE. |
WM_PAINT | Målar den ogiltiga regionen i kombinationsrutan. Om wParam- inte är NULL-antas det vara en handtag för enhetskontext (DC) som skickas från en underklassfunktion. I fönsterproceduren används den angivna domänkontrollanten i stället för att anropa BeginPaint och EndPaint. |
WM_PASTE | Ersätter redigeringsmarkeringen med innehållet i Urklipp. I enkla och nedrullningsbara kombinationsrutor bearbetar redigeringskontrollen det här meddelandet. I listrutor returnerar fönsterproceduren CB_ERR. |
WM_SETFOCUS | Ställer in fokus på redigeringskontrollen eller i listrutor invertera markeringsfältet och aktiverar caret i listfönstret. |
WM_SETFONT | Sparar det angivna teckensnittshandtaget i en intern struktur, justerar dimensionerna för markeringsfältet och listan och ogiltigförklarar kombinationsrutefönstret. Text i markeringsfältet och listan visas i det sparade teckensnittet. |
WM_SETREDRAW | Anger eller rensar flaggan för att rita om. Om redraw-flaggan är avmarkerad, ommålas inte kombinationsrutan förrän flaggan har angetts igen. |
WM_SETTEXT | Anger innehållet i redigeringskontrollen. I enkla och nedrullningsbara kombinationsrutor bearbetar redigeringskontrollen det här meddelandet. I listrutor returnerar fönsterproceduren CB_ERR. |
WM_SIZE | Ändrar storlek på de underordnade fönstren om det behövs. |
WM_SYSKEYDOWN | Öppnar eller stänger listrutan beroende på vilken piltangent användaren tryckte på. |
Alla andra meddelanden skickas till funktionen DefWindowProc för standardbearbetning.