Добавление всплывающей подсказки в элементы 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 (тот же результат).
Ответы
Ответ 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='*'\"")
![введите описание изображения здесь]()