Member 8833981 Ответов: 0

Всплывающая подсказка 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.

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

Спасибо за помощь!

Алена

0 Ответов