GetMenuItemInfo() devuelve un valor lógico, verdadero si todo ha ido bien.
Lo primero que se me ha ocurrido es que la estructura MENUITEMINFO mi; no este "limpia", asi que he añadido estas líneas:
Code: Select all | Expand
HB_FUNC( MISTEXT ) // pItemStruct --> cPrompt
{
#ifdef _WIN64
LPDRAWITEMSTRUCT lpdis = ( LPDRAWITEMSTRUCT ) hb_parnll( 1 );
#else
LPDRAWITEMSTRUCT lpdis = ( LPDRAWITEMSTRUCT ) hb_parnl( 1 );
#endif
MENUITEMINFO mi;
BYTE buffer[ 100 ];
memset( &mi, 0, sizeof( mi ) );
mi.cbSize = sizeof( MENUITEMINFO );
mi.fMask = MIIM_STRING;
mi.dwTypeData = ( LPSTR ) buffer;
if( ! GetMenuItemInfo( ( HMENU ) lpdis->hwndItem, lpdis->itemID, FALSE, &mi ) )
strcpy( buffer, "here" );
hb_retc( ( char * ) buffer );
}
Pero aún asi sigue fallando y el caso es que no se añade "here" al texto del menuitem, luego GetMenuItemInfo() está devolviendo verdadero.
Y si devuelve verdadero, por qué lo que copia en buffer esta mal ?
sigo...