Bonjour,

Lors d'un développement, je devait concaténer deux CMenu.

J'ai réalisé un bout de code pour y arriver.

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
34
35
void GE_AppendMenu ( CMenu * pMenu, CMenu * pNewMenu )
{
	ASSERT ( pMenu && pNewMenu );
	if ( pMenu == NULL || pNewMenu == NULL )
		return;
 
 
	UINT uPos = pMenu->GetMenuItemCount ( );
	CMenu subMenu;
	char sText [ 128 ];
 
	MENUITEMINFO info = {0};
	info.cbSize = sizeof (MENUITEMINFO); // must fill up this field
	info.fMask = MIIM_STATE | MIIM_STRING | MIIM_ID | MIIM_SUBMENU;
	info.dwTypeData = sText;
	info.cch = sizeof ( sText );
	for ( UINT i = 0; i < pNewMenu->GetMenuItemCount ( ); i++ )
	{
		memset ( sText, '\0', sizeof ( sText ) );
 
		if ( pNewMenu->GetMenuItemInfo ( i, &info, TRUE ) == FALSE )
		{
			DWORD dwError = GetLastError ( );
			ASSERT ( FALSE );
			continue;
		}
 
		if ( info.hSubMenu != NULL )
		{
			ASSERT ( FALSE );
		}
 
		InsertMenuItem ( pMenu->m_hMenu, uPos++, TRUE, &info );
	}
}
Ca marche relativement mais j'ai quelques soucis. D'une je n'ai pas encore géré les sous menus et leurs récursivités.
Le second soucis, c'est au niveau du texte. Le premier élément du menu fraichement ajouté est correct mais pour les autres éléments du menu le texte est tronqué au bout de 15 caractères.

Quelqu'un aurait une idée voir une solution à mon problème ?

Merci d'avance