Gestion de la notification TTN_NEEDTEXT pour les info-bulles

Dans le cadre de l’activation des conseils de l’outil, vous gérez le message TTN_NEEDTEXT en ajoutant l’entrée suivante à la carte des messages de votre fenêtre propriétaire :

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

memberFxn
Fonction membre à appeler lorsque le texte est nécessaire pour ce bouton.

Notez que l’ID d’une info-bulle est toujours 0.

Déclarez votre fonction de gestionnaire dans la définition de classe comme suit :

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

où sont les paramètres italiques :

id
Identificateur du contrôle qui a envoyé la notification. Pas utilisé. L’ID de contrôle est extrait de la structure NMHDR .

pNMHDR
Pointeur vers la structure NMTTDISPINFO . Cette structure est également abordée plus loin dans la structure TOOLTIPTEXT.

pResult
Pointeur vers le code de résultat que vous pouvez définir avant de retourner. TTN_NEEDTEXT gestionnaires peuvent ignorer le paramètre pResult.

En guise d’exemple de gestionnaire de notification d’affichage de formulaire :

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

Appel EnableToolTips (ce fragment extrait de OnInitDialog) :

EnableToolTips(TRUE);

Voir aussi

Info-bulles dans les fenêtres non dérivées de CFrameWnd