2015-07-22 12 views
11

Qualche tempo fa, ho provato ad aggiungere un suggerimento per scopi di test su un oggetto CMenu. Ora ne ho bisogno, e sto affrontando di nuovo lo stesso problema.Aggiunta di una descrizione comando a voci CMenu

Questa domanda e risposta (s): MFC : How to add tooltip in Cmenu items?
non mi aiuta affatto, in quanto questa "magia a capo" è semplicemente non funziona.

Inoltre, sembra che io non sono l'unico ad avere problemi con esso: MFC CMenu tooltip not being displayed

void CTextListCtrl::CreateMenu(void) 
{ 
    m_Menu.CreateMenu(); 
    CMenu submenu; 
    submenu.CreatePopupMenu(); 
    submenu.AppendMenuW(MF_STRING, IDC_RESEND_POPUP, L"&Resend\nShow me the tooltip"); 
    //Other menu items... 
    m_Menu.AppendMenuW(MF_POPUP, reinterpret_cast<UINT_PTR>(submenu.m_hMenu), L""); 
    submenu.Detach(); 
} 

Il risultato è questo:

enter image description here

Tuttavia, aumentando le lettere di il testo ha come risultato un menu a comparsa più grande, non un suggerimento di menu.

Ho visto gli altri collegamenti in questa risposta e li ho controllati e i progetti. Ma questi non sono quello che voglio.

Qualcuno sa cosa ho fatto di sbagliato oppure esiste un'altra soluzione/fonte che potrebbe essere utile?


Edit: Come ho detto prima in un comment, ecco una sample solution con requisiti minimi per riprodurre il problema. (Vedere CMenuListCtrl.cpp(100))
Testato con VS2010 & VS2015 (stesso risultato).

+0

forse il suo solo di sostituire \ n da \ r \ n che si prevede da MFC per interruzioni di linea. – Totonga

+0

@Totonga No, ho provato questo, lo stesso risultato. – Blacktempel

risposta

1

Ecco il trucco che risolverà il problema, "newline magic" funzionerà sicuramente.

Assicurarsi di utilizzare la versione 6 di ComCtl32.dll.

Aggiungi sotto il blocco nel file stdafx.h e ricostruisci il tuo progetto.

#pragma comment(linker, "\"/manifestdependency:type='win32'\ 
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \ 
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") 

enter image description here

+0

Questo è in 'stdafx.h' per impostazione predefinita e non funziona. – Blacktempel

+0

Puoi condividere con me la tua soluzione VC++? – user1

+0

[Soluzione caricata] (http://s000.tinyupload.com/index.php?file_id=07597732216098941519) con requisiti minimi per riprodurre il problema. Supponiamo che 'CMenu' possa essere in qualsiasi altra classe o controllo. – Blacktempel

Problemi correlati