Recebendo notificação de controles comuns
Os controles comuns são as janelas filho que enviam notificações para a janela pai quando eventos, como a entrada do usuário, ocorrem no controle.
O aplicativo depende dessas notificações para determinar a ação que o usuário deseja executar. A maioria dos controles comuns como notificações enviam mensagens de WM_NOTIFY . Os controles do windows envia a maioria das notificações como mensagens de WM_COMMAND . CWnd::OnNotify é o manipulador para a mensagem de WM_NOTIFY . Como com CWnd::OnCommand, a implementação de OnNotify expede a notificação a OnCmdMsg para tratar em mapas da mensagem. A entrada retornadas mapa para tratar notificações é ON_NOTIFY. Para obter mais informações, consulte Observação 61 técnica: Mensagens de ON_NOTIFY e de WM_NOTIFY.
Como alternativa, uma classe derivada pode tratar notificações usando suas próprias da mensagem “reflexão.” Para obter mais informações, consulte Observação 62 técnica: Reflexão de mensagem para controles do windows.
Recuperando a posição do cursor em uma notificação
Ocasionalmente, determine a posição atual do cursor quando certas notificações são recebidas por um controle comuns. Por exemplo, seria útil para determinar o local do cursor atual quando um controle comuns receber uma notificação de NM_RCLICK .
Há uma maneira simples de realizar isso chamando CWnd::GetCurrentMessage. No entanto, esse método recupera apenas a posição do cursor na mensagem foi enviada. Como o cursor pode ter sido movido desde que foi enviada você deve chamar CWnd::GetCursorPos para obter a posição atual do cursor.
Dica
CWnd::GetCurrentMessage só deve ser chamado dentro de um manipulador de mensagens.
Adicione o seguinte código ao corpo do manipulador de notificação (neste exemplo, NM_RCLICK):
CPoint cursorPos;
cursorPos.x = GetCurrentMessage()->pt.x;
cursorPos.y = GetCurrentMessage()->pt.y;
Neste momento, o local do cursor do mouse é armazenado no objeto de cursorPos .