Compartir a través de


Controlar la notificación TTN_NEEDTEXT para la información sobre herramientas

Como parte de la habilitación de la información sobre herramientas, puede controlar el mensaje TTN_NEEDTEXT agregando la siguiente entrada al mapa de mensajes de la ventana del propietario:

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

memberFxn
Función miembro a la que se llamará cuando se necesite texto para este botón.

Tenga en cuenta que el id. de la información sobre herramientas siempre es 0.

Declare la función de controlador en la definición de clase como se indica a continuación:

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

donde los parámetros en cursiva son:

id
El identificador del control que ha enviado la notificación. No se utiliza. El id. del control se toma de la estructura NMHDR.

pNMHDR
Puntero a la estructura NMTTDISPINFO. Esta estructura también se describe con más detalle en Estructura TOOLTIPTEXT.

pResult
Puntero al código de resultado que puede establecer antes de volver. Los controladores TTN_NEEDTEXT pueden omitir el parámetro pResult.

Como ejemplo de un controlador de notificaciones de vista de formulario:

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

Llame a EnableToolTips (este fragmento se ha tomado de OnInitDialog):

EnableToolTips(TRUE);

Consulte también

Información sobre herramientas en ventanas no derivadas de CFrameWnd