1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
POINT l_Point;
if( ::GetCursorPos(&l_Point) )
{
// Conversion des coordonnées du curseur
this->m_ctrlTree.ScreenToClient(&l_Point);
// Récupération du handle de l'item sous le curseur
HTREEITEM l_hItem = this->m_ctrlTree.HitTest(CPoint(l_Point.x, l_Point.y));
if( l_hItem )
{
// Mise en sélection de l'item
this->m_ctrlTree.SelectItem(l_hItem);
DWORD l_itemData = this->m_ctrlTree.GetItemData(l_hItem);
CMenu l_Menu;
if( l_Menu.LoadMenu(IDR_MENU) )
{
CMenu* l_pPopupMenu = 0;
if( l_itemData == l_pInstance->CST_0 )
l_pPopupMenu = l_Menu.GetSubMenu(0);
else if( l_itemData == l_pInstance->CST_1 )
l_pPopupMenu == l_Menu.GetSubMenu(1);
else if( l_itemData == l_pInstance->CST_2 )
l_pPopupMenu == l_Menu.GetSubMenu(2);
this->m_ctrlTree.ClientToScreen(&l_Point);
l_pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, l_Point.x, l_Point.y, this);
l_Menu.DestroyMenu();
}
}
} |
Partager