Compartilhar via


Manipulando notificação TTN_NEEDTEXT para dicas de ferramenta

Como parte da habilitação de dicas de ferramenta, você manipula a mensagem TTN_NEEDTEXT adicionando a seguinte entrada ao mapa de mensagens da janela do proprietário:

ON_NOTIFY_EX(TTN_NEEDTEXT, 0, &CMyDialog::OnTtnNeedText)

memberFxn
A função membro a ser chamada quando é necessário texto para este botão.

Observe que a ID de uma dica de ferramenta é sempre 0.

Declare sua função de manipulador na definição de classe da seguinte maneira:

afx_msg BOOL OnTtnNeedText(UINT id, NMHDR* pNMHDR, LRESULT* pResult);

em que os parâmetros em itálico são:

id
Identificador do controle que enviou a notificação. Não usado. A ID de controle é obtida da estrutura NMHDR.

pNMHDR
Um ponteiro para a estrutura NMTTDISPINFO. Essa estrutura também é discutida mais adiante em A estrutura TOOLTIPTEXT.

pResult
Um ponteiro para o código de resultado que você pode definir antes de retornar. Manipuladores TTN_NEEDTEXT podem ignorar o parâmetro pResult.

Como exemplo de manipulador de notificação de exibição de formulário:

BOOL CMyDialog::OnTtnNeedText(UINT id, NMHDR* pNMHDR, LRESULT* pResult)
{
   UNREFERENCED_PARAMETER(id);

   NMTTDISPINFO* pTTT = (NMTTDISPINFO*)pNMHDR;
   UINT_PTR nID = pNMHDR->idFrom;
   BOOL bRet = FALSE;

   if (pTTT->uFlags & TTF_IDISHWND)
   {
      // idFrom is actually the HWND of the tool
      nID = ::GetDlgCtrlID((HWND)nID);
      if (nID)
      {
         _stprintf_s(pTTT->szText, sizeof(pTTT->szText) / sizeof(TCHAR),
            _T("Control ID = %d"), nID);
         pTTT->hinst = AfxGetResourceHandle();
         bRet = TRUE;
      }
   }

   *pResult = 0;

   return bRet;
}

Chame EnableToolTips (este fragmento retirado de OnInitDialog):

EnableToolTips(TRUE);

Confira também

Dicas de ferramenta no Windows não derivadas de CFrameWnd