Sdílet prostřednictvím


Řízení zpráv

Tato část obsahuje informace o tom, jak se zprávy systému Windows používají ke komunikaci s ovládacími prvky.

Probírají se následující témata.

Zprávy do běžných ovládacích prvků

Vzhledem k tomu, že běžné ovládací prvky jsou okna, může s nimi aplikace komunikovat pomocí běžných zpráv Microsoft Win32, jako jsou WM_GETFONT nebo WM_SETTEXT. Třída okna každého běžného ovládacího prvku navíc podporuje sadu zpráv specifických pro ovládací prvky. Aplikace obvykle používá SendMessage nebo SendDlgItemMessage předávat zprávy do ovládacího prvku (často přijímá informace v návratové hodnotě).

Některé běžné ovládací prvky mají také sadu maker, které může aplikace používat místo SendMessage. Makra se obvykle snadněji používají než funkce. Následující příklad kódu načte text vybrané položky stromového zobrazení, nejprve pomocí nezpracovaných zpráv a druhý pomocí ekvivalentních maker. Předpokládejme, že hwnd je úchyt ovládacího okna.

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);

Když dojde ke změně nastavení barev systému, systém Windows odešle zprávu WM_SYSCOLORCHANGE do všech oken nejvyšší úrovně. Okno nejvyšší úrovně musí zprávu WM_SYSCOLORCHANGE předat běžným ovládacím prvkům; jinak nebudou ovládací prvky upozorněny na změnu barvy. Přeposílání zprávy zajišťuje, že barvy používané vašimi běžnými ovládacími prvky jsou konzistentní s barvami používanými jinými objekty uživatelského rozhraní. Například ovládací prvek panelu nástrojů používá barvu "3D Objekty" k nakreslení jeho tlačítek. Pokud uživatel změní barvu prostorového objektu, ale WM_SYSCOLORCHANGE zpráva se nepřepošla na panel nástrojů, tlačítka panelu nástrojů zůstanou v původní barvě (nebo dokonce změní na kombinaci starých a nových barev), zatímco barva ostatních tlačítek v systému se změní.

Oznámení z ovládacích prvků

Ovládací prvky jsou podřízená okna, která odesílají zprávy s oznámením do nadřazeného okna, když se v ovládacím prvku obvykle aktivují vstupy od uživatele. Aplikace spoléhá na tyto zprávy s oznámením, aby určila, jakou akci chce uživatel provést. S výjimkou trackbarů, které používají WM_HSCROLL a WM_VSCROLL zprávy k upozorňování nadřazených změn, běžné ovládací prvky odesílají oznámení jako WM_COMMAND nebo WM_NOTIFY zprávy, jak je uvedeno v referenčním tématu oznámení. Obvykle se starší oznámení (ta, která jsou v rozhraní API dlouhou dobu) používají WM_COMMAND.

Parametr lParamWM_NOTIFY je adresa NMHDR struktury nebo adresy větší struktury, která zahrnuje NMHDR jako prvního člena. Struktura obsahuje kód oznámení a identifikuje společný ovládací prvek, který odeslal zprávu oznámení. Význam zbývajících členů struktury, pokud existuje, se liší v závislosti na kódu oznámení.

Každý typ společného ovládacího prvku má odpovídající sadu kódů oznámení. Knihovna běžných ovládacích prvků také poskytuje kódy oznámení, které lze odeslat více než jedním typem společného ovládacího prvku. Informace o tom, jaké kódy oznámení budou odesílat a jaký formát mají, najdete v dokumentaci, která se zajímá o kontrolu nad tím, jaké kódy oznámení budou odesílat.

Příklad kódu, který ukazuje, jak zpracovávat WM_NOTIFY zprávy, najdete v referenčním tématu této zprávy.

obecné referenční ovládacích prvků