Dela via


Kontrollera meddelanden

Det här avsnittet innehåller information om hur Windows-meddelanden används för att kommunicera med kontroller.

Följande avsnitt beskrivs.

Meddelanden till vanliga kontroller

Eftersom vanliga kontroller är windows kan ett program kommunicera med dem med hjälp av vanliga Microsoft Win32-meddelanden som WM_GETFONT eller WM_SETTEXT. Dessutom stöder fönsterklassen för varje gemensam kontroll en uppsättning kontrollspecifika meddelanden. Vanligtvis använder ett program SendMessage eller SendDlgItemMessage för att skicka meddelanden till kontrollen (tar ofta emot information i returvärdet).

Vissa vanliga kontroller har också en uppsättning makron som ett program kan använda i stället för SendMessage. Makrona är vanligtvis enklare att använda än funktionerna. Följande exempelkod hämtar texten i det markerade trädvisningsobjektet, först med hjälp av rådatameddelandena och sedan med hjälp av motsvarande makron. Anta att hwnd är kontrollfönstrets handtag.

BOOL fSuccess;
WCHAR itemText[99];
TVITEM tvItem = { 0 };
tvItem.mask = TVIF_TEXT;
tvItem.cchTextMax = ARRAYSIZE(itemText);
tvItem.pszText = itemText;

// This...
tvItem.hItem = (HTREEITEM)SendMessage(hwnd, TVM_GETNEXTITEM, TVGN_CARET, NULL);
fSuccess = SendMessage(hwnd, TVM_GETITEM, 0, (LPARAM)&tvItem);

// ... is equivalent to this.
tvItem.hItem = TreeView_GetSelection(hwnd);
fSuccess = TreeView_GetItem(hwnd, &tvItem);

När en ändring görs i systemfärginställningarna skickar Windows ett WM_SYSCOLORCHANGE meddelande till alla fönster på den översta nivån. Fönstret på den översta nivån måste vidarebefordra meddelandet WM_SYSCOLORCHANGE till dess gemensamma kontroller. annars meddelas inte kontrollerna om färgändringen. Om du vidarebefordrar meddelandet ser du till att de färger som används av dina vanliga kontroller överensstämmer med de som används av andra användargränssnittsobjekt. En verktygsfältskontroll använder till exempel färgen "3D-objekt" för att rita knapparna. Om användaren ändrar 3D-objektets färg, men meddelandet WM_SYSCOLORCHANGE inte vidarebefordras till verktygsfältet, förblir knapparna i originalfärgen (eller ändras till en kombination av gamla och nya färger) medan färgen på andra knappar i systemet ändras.

Meddelanden från kontroller

Kontroller är underordnade fönster som skickar meddelanden till det överordnade fönstret när händelser, som vanligtvis utlöses av indata från användaren, inträffar i kontrollen. Programmet förlitar sig på dessa meddelanden för att avgöra vilken åtgärd användaren vill att det ska vidta. Förutom spårfält, som använder WM_HSCROLL och WM_VSCROLL meddelanden för att meddela sina överordnade om ändringar, skickar vanliga kontroller meddelanden som antingen WM_COMMAND eller WM_NOTIFY meddelanden, enligt beskrivningen i referensavsnittet för meddelandet. Äldre meddelanden (de som har funnits i API:et under lång tid) använder vanligtvis WM_COMMAND.

Parametern lParam för WM_NOTIFY är antingen adressen till en NMHDR- struktur eller adressen till en större struktur som innehåller NMHDR som dess första medlem. Strukturen innehåller meddelandekoden och identifierar den gemensamma kontroll som skickade meddelandemeddelandet. Innebörden av de återstående strukturmedlemmarna varierar beroende på meddelandekoden.

Varje typ av gemensam kontroll har en motsvarande uppsättning aviseringskoder. Det gemensamma kontrollbiblioteket innehåller också meddelandekoder som kan skickas av mer än en typ av gemensam kontroll. Se dokumentationen för kontroll av intresse för att avgöra vilka meddelandekoder den ska skicka och vilket format de tar.

Exempelkod som visar hur du hanterar WM_NOTIFY meddelanden finns i referensavsnittet för meddelandet.

allmän kontrollreferens