[MFC][VC6] Pb assertion sur affichage menu contextuel
Bonsoir à toutes et à tous,
J'ai un boîte de dialogue dans laquelle j'ai un arbre avec 3 items.
J'ai dans mes ressources un menu que j'affiche lorsque je fais un clique droit sur un des items de mon arbre (le code est suit histoire de se faire une idée).
Bref, j'en arrive à mon problème. Lorsque je fais un premier clique droit sur un des items le menu s'affiche correctement mais lorsque je fais un clique droit sur un autre item et que le menu est encore affiché j'ai une assertion qui claque et je ne sais pas pourquoi.
Voici donc le code, si quelqu'un peut me donner une piste pour résoudre mon problème c'est super.
Bonne soirée à toutes et à tous.
Code:
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();
}
}
} |