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 : Sélectionner tout - Visualiser dans une fenêtre à part
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();
			}
		}
	}