Bonjour,
j'aimerais afficher des bulle d'aides sur tous les éléments d'une combobox.
J'ai donc voulu utiliser la méthode GetComboBoxInfo pour récupérer un handle sur la listBox et ainsi, avec les méthode ItemFromPoint récupérer l'item le plus proche d'un point donné :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| int ComboBox::OnToolHitTest(CPoint point, TOOLINFO * pTI) const
{
int row;
RECT cellrect;
BOOL tmp = FALSE;
COMBOBOXINFO info;
GetComboBoxInfo(&info);
listbox->SubclassWindow(info.hwndList);
row = listbox->ItemFromPoint(point,tmp);
if ( row == -1 )
return -1;
listbox->GetItemRect(row,&cellrect);
pTI->rect = cellrect;
pTI->hwnd = m_hWnd;
pTI->uId = (UINT)((row));
pTI->lpszText = LPSTR_TEXTCALLBACK;
return pTI->uId;
} |
mais mon handle de ListBox est vide et le programme plante dans la fonction
CWnd::Attach(HWND hWndNew) a la ligne
ASSERT(m_hWnd == NULL); // only attach once, detach on destroy
je ne sais pas trop comment résoudre mon problème, à dire vrai je ne sais même pas si ma méthode est correct ...
Partager