Некоторое время назад я пытался добавить всплывающую подсказку для тестирования элемента 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();
}
Результат таков:
Однако увеличение букв текста приводит к появлению большего всплывающего меню, а не всплывающей подсказки меню.
Я видел другие ссылки в этом ответе, и проверил их и проекты. Но это не то, что я хочу.
Кто-то знает, что я сделал неправильно, или есть другое решение / источник, который может быть полезным?
Изменить: как я уже упоминал ранее в комментарий, вот образец раствора с минимальными требованиями для воспроизведения проблемы. (Увидеть CMenuListCtrl.cpp(100)
)
Протестировано с VS2010 & VS2015 (тот же результат).
Вот трюк, который решит вашу проблему, «волшебство новой строки» сработает наверняка.
Убедитесь, что вы используете версию 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='*'\"")