Всплывающая подсказка MFC и языки справа налево
Привет,
У меня есть проблема с подсказкой панели инструментов с пользовательским интерфейсом в режиме справа налево.
Моя панель инструментов отображается правильно. Порядок расположения значков перевернут, но сами значки не зеркальны.
Однако, когда я провожу мышью по значкам, всплывающая подсказка отображается неправильно.
Изображение во всплывающей подсказке зеркально отражается, и изображение отображается слева во всплывающей подсказке с текстом всплывающей подсказки справа.
Я ожидаю, что значок не будет зеркально отражаться и отображаться с правой стороны с текстом всплывающей подсказки слева.
Режим справа налево устанавливается следующим образом.
SetProcessDefaultLayout (LAYOUT_RTL);
Интерфейс пользовательского интерфейса использует этот стиль.
CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_ObsidianBlack);
Мое приложение использует класс следующим образом.
class MyApp : public CWinAppEx
MyApp myApp; CMFCToolTipInfo ttParams; ttParams.m_bVislManagerTheme = TRUE; myApp.GetTooltipManager()->SetTooltipParams(AFX_TOOLTIP_TYPE_ALL, RUNTIME_CLASS(CMFCToolTipCtrl), &ttParams);
Что я уже пробовал:
Я попытался наследовать класс CMFCToolTipCtrl со своим собственным, а затем перегрузить его.
OnDrawIcon, OnDrawLabelфункции.
class MyToolTipCtrl : public CMFCToolTipCtrl
BOOL MyToolTipCtrl::OnDrawIcon(CDC* pDC, CRect rectImage) { ... } CSize MyToolTipCtrl::OnDrawLabel(CDC* pDC, CRect rect, BOOL bCalcOnly) { ... }
Из функции OnDrawIcon я получаю нужный размер значка.
Однако теперь я застрял, так как не могу найти способ получить свой значок из объекта CDC.
Это правильный подход или есть что-то более простое?
Как управлять положением значка и текста внутри всплывающей подсказки?
Спасибо за помощь!
Алена