Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Controles comuns são janelas filho que enviam mensagens de notificação à janela pai quando eventos, como entrada do usuário, ocorrem no controle.
O aplicativo depende dessas mensagens de notificação para determinar qual ação o usuário quer que execute. Os controles mais comuns enviam mensagens de notificação como mensagens WM_NOTIFY. Os controles do Windows enviam a maioria das mensagens de notificação como mensagens WM_COMMAND. CWnd::OnNotify é o manipulador da mensagem WM_NOTIFY. Assim como CWnd::OnCommand, a implementação de OnNotify envia a mensagem de notificação para OnCmdMsg para o tratamento em mapas de mensagens. A entrada do mapa de mensagens para lidar com notificações é ON_NOTIFY. Para obter mais informações, consulte a Observação Técnica 61: ON_NOTIFY e mensagens de WM_NOTIFY.
Como alternativa, uma classe derivada pode lidar com suas próprias mensagens de notificação usando "reflexão de mensagem". Para obter mais informações, consulte a Observação Técnica 62: Reflexão de Mensagens para Controles do Windows.
Recuperando a posição do cursor em uma mensagem de notificação
Às vezes, é útil determinar a posição atual do cursor quando determinadas mensagens de notificação são recebidas por um controle comum. Por exemplo, seria útil determinar o local atual do cursor quando um controle comum recebe uma mensagem de notificação NM_RCLICK.
Há uma maneira simples de fazer isso chamando CWnd::GetCurrentMessage. No entanto, esse método recupera apenas a posição do cursor no momento em que a mensagem foi enviada. Como o cursor pode ter sido movido desde que a mensagem foi enviada, você deve ligar CWnd::GetCursorPos para obter a posição atual do cursor.
Observação
CWnd::GetCurrentMessage só deve ser chamado dentro de um manipulador de mensagens.
Adicione o seguinte código ao corpo do manipulador de mensagens de notificação (neste exemplo, NM_RCLICK):
CPoint cursorPos;
cursorPos.x = GetCurrentMessage()->pt.x;
cursorPos.y = GetCurrentMessage()->pt.y;
Neste ponto, o local do cursor do mouse é armazenado no cursorPos objeto.