wxtooltip wxwidgets

#c #wxwidgets

#c #wxwidgets

Вопрос:

Мы создали приложение с использованием wxWidgets на C и используем wxToolTips для предоставления некоторой информации конечному пользователю, когда он наводит указатель мыши на что-то в приложении. однако я замечаю, что всплывающие подсказки автоматически аккуратно упаковываются в новые строки в Mac. но в Windows это выглядит как одна единственная строка, которая выглядит не очень привлекательно.

в Mac: «это помогает увеличить яркость изображения …………………….»

в win: «это помогает увеличить яркость изображения……………………….»

Кто-нибудь может мне помочь с этим? Я не хочу использовать символы новой строки и жестко кодировать всплывающую подсказку в несколько строк

Ответ №1:

В MSW есть статическая функция wxToolTip::SetMaxWidth(int width) , которая задает ширину в пикселях. Вы должны вызвать его перед установкой wxToolTip, согласно документации.

Комментарии:

1. Спасибо, Джон, но я считаю, что функция setMaxWidth доступна только с wxWidgets 2.8.10 и выше. Я использую 2.8.2.

2. Хммм … тогда, я думаю, вам нужно будет напрямую вызвать Windows API, чтобы установить максимальную ширину. В mswtooltip.cpp wxWidgets 2.9.2 используется SendTooltipMessage(GetToolTipCtrl(), TTM_SETMAXTIPWIDTH, wxUIntToPtr(maxWidth)); , который становится похожим на сообщение ::SendMessage((HWND)hwnd, msg, 0, (LPARAM)lParam) , поэтому, если вы можете захватить hwnd , это кажется возможным с небольшой работой.