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