Как да промените цвета на текста и фона на подсказката
Текстова версия: 1.0
За тази цел са предоставени специалните съобщения TTM_SETTIPTEXTCOLOR и TTM_SETTIPBKCOLOR. След като подсказката е създадена, те могат да бъдат изпратени чрез функцията SendMessage. В този случай новата стойност на цвета се записва в wParam, а съдържанието на lParam се игнорира. Помислете за пример, при който в подсказката е даден червен текст на черен фон.
MFC използва функциите CToolTipCtrl::SetTipTextColor и CToolTipCtrl::SetTipBkColor за същата цел, като взема един параметър, нова стойност на цвета. Например:
Проблеми възникват само когато използвате вградената поддръжка на подсказки на класа CWnd. В този случай подсказката се създава и унищожава в недрата на MFC и няма документиран начин да се стигне до нея. Можете да излезете от ситуацията, като използвате недокументирания: MFC съхранява указател към създадения от него обект от клас CToolTipCtrl в структурата _AFX_THREAD_STATE и можете да получите достъп до него чрез израза AfxGetThreadState()->m_pToolTip.
Вторият проблем е, че самият MFC следи живота на подсказката и не можем да знаем точно кога е унищожен и пресъздаден. Следователно параметрите на дисплея, от които се нуждаем, трябва да бъдат зададени винаги, когато подсказката е „на път“ да се появи на екрана. Най-удобно е да направите това в отговор на известие TTN_NEEDTEXT, например:
Както можете да видите, този метод не блести с елегантност. Ето защо, когато имате нужда от гъвкавост в управлението на подсказките, се препоръчва да използвате класа CToolTipCtrl.
В заключение отбелязвам, че в допълнение към вече разгледаните съобщения, подсказката разпознава съобщенията TTM_GETTIPTEXTCOLOR и TTM_GETTIPBKCOLOR, които ви позволяват да определитетекущи цветови стойности. MFC предоставя функциите GetTipTextColor и GetTipBkColor на класа CToolTipCtrl за същата цел.