Подтвердить что ты не робот

Добавление всплывающей подсказки в элементы CMenu

Некоторое время назад я попытался добавить всплывающую подсказку для тестирования в CMenu. Теперь мне это нужно, и я снова столкнусь с той же проблемой.

Этот вопрос и ответ (ы): MFC: как добавить всплывающую подсказку в элементы Cmenu?
не помогает мне вообще, так как эта" магия новой линии" просто не работает.

Кроме того, похоже, что я не единственный, у кого проблемы с ним: Всплывающая подсказка MFC CMenu не отображается

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();
}

В результате получится следующее:

enter image description here

Однако увеличение букв текста приводит к большему всплывающему меню, а не к подсказке меню.

Я видел другие ссылки в этом ответе и проверил их и проекты. Но это не то, что я хочу.

Кто-нибудь знает, что я сделал неправильно, или есть другое решение/источник, который может быть полезен?


Изменить: как я уже упоминал ранее в comment, вот sample решение с минимальными требованиями к воспроизведению проблемы. (См. CMenuListCtrl.cpp(100))
Протестировано с VS2010 и VS2015 (тот же результат).

4b9b3361

Ответ 1

Вот трюк, который исправит вашу проблему, "магия новой линии" будет работать точно.

Убедитесь, что вы используете версию 6 ComCtl32.dll.

Добавьте в блок stdafx.h блок внизу и перестройте проект.

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

введите описание изображения здесь