Sdílet prostřednictvím


Příjem oznámení z běžných ovládacích prvků

Běžné ovládací prvky jsou podřízená okna, která odesílají zprávy s oznámením do nadřazeného okna, když v ovládacím prvku dojde k událostem, jako je vstup od uživatele.

Aplikace spoléhá na tyto zprávy s oznámením, aby určila, jakou akci chce uživatel provést. Nejběžnější ovládací prvky odesílají zprávy s oznámeními jako WM_NOTIFY zprávy. Ovládací prvky Windows odesílají většinu zpráv oznámení jako zprávy WM_COMMAND. CWnd::OnNotify je obslužná rutina WM_NOTIFY zprávy. CWnd::OnCommandStejně jako v případě, implementace OnNotify odeslání zprávy oznámení pro OnCmdMsg zpracování v mapách zpráv. Položka mapy zpráv pro zpracování oznámení je ON_NOTIFY. Další informace naleznete v technické poznámce 61: ON_NOTIFY a WM_NOTIFY zprávy.

Odvozená třída může také zpracovávat své vlastní zprávy s oznámením pomocí "reflexe zprávy". Další informace naleznete v technické poznámce 62: Zpráva Reflexe ion pro ovládací prvky Windows.

Načtení pozice kurzoru ve zprávě s oznámením

Při příležitosti je užitečné určit aktuální pozici kurzoru, když jsou určité zprávy oznámení přijaty běžným ovládacím prvku. Například by bylo užitečné určit aktuální umístění kurzoru, když běžný ovládací prvek obdrží zprávu NM_RCLICK oznámení.

Existuje jednoduchý způsob, jak toho dosáhnout voláním CWnd::GetCurrentMessage. Tato metoda však načte pozici kurzoru pouze v době odeslání zprávy. Vzhledem k tomu, že se kurzor mohl přesunout od odeslání zprávy, musíte zavolat CWnd::GetCursorPos , abyste získali aktuální pozici kurzoru.

Poznámka

CWnd::GetCurrentMessage měla by být volána pouze v rámci obslužné rutiny zprávy.

Do textu obslužné rutiny zprávy s oznámením přidejte následující kód (v tomto příkladu NM_RCLICK):

CPoint cursorPos;
cursorPos.x = GetCurrentMessage()->pt.x;
cursorPos.y = GetCurrentMessage()->pt.y;

V tomto okamžiku je umístění kurzoru myši uloženo v objektu cursorPos .

Viz také

Příprava a použití ovládacích prvků
Ovládací prvky