2015-07-22 37 views
11

Jakiś czas temu próbowałem dodać etykietkę narzędzi do celów testowych na elemencie CMenu. Teraz będę go potrzebować i znów mam do czynienia z tym samym problemem.Dodawanie etykiety narzędzi do pozycji menu po CMenu

To pytanie odpowiedź (s): MFC : How to add tooltip in Cmenu items?
mi nie pomaga w ogóle, jak to „nowalinia magia” jest po prostu nie działa.

Ponadto, wydaje się, że nie jestem jedyną osobą mającą problemy z nim: 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(); 
} 

Rezultat jest taki:

enter image description here

Jednak zwiększenie liter tekst powoduje wyświetlenie większego wyskakującego menu, a nie etykiety menu.

Widziałem inne linki w tej odpowiedzi i sprawdziłem je i projekty. Ale nie tego chcę.

Czy ktoś wie, co zrobiłem źle, czy jest inne rozwiązanie/źródło, które mogłoby być pomocne?


Edit: Jak już wcześniej wspomniano w comment, tutaj jest sample solution z minimalnymi wymaganiami odtworzyć problem. (Patrz CMenuListCtrl.cpp(100))
Testowano przy użyciu VS2010 & VS2015 (ten sam wynik).

+0

może jej tylko na zastąpieniu \ n, w którym ma nastąpić MFC przerwy linii \ r \ n. – Totonga

+0

@Totonga Nie, próbowałem tego, ten sam wynik. – Blacktempel

Odpowiedz

1

Oto sztuczka, która rozwiąże Twój problem, "magia newline" będzie działać na pewno.

Upewnij się, że używasz wersji 6 pliku ComCtl32.dll.

Dodaj poniżej blok w pliku stdafx.h i odbuduj swój projekt.

#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

To jest domyślnie w 'stdafx.h' i nie działa. – Blacktempel

+0

Czy możesz dzielić się ze mną swoim rozwiązaniem VC++? – user1

+0

[Rozwiązanie przesłane] (http://s000.tinyupload.com/index.php?file_id=07597732216098941519) z minimalnymi wymaganiami, aby odtworzyć problem. Załóżmy, że 'CMenu' może być w każdej innej klasie lub kontroli. – Blacktempel