TThemeServices :: Нерешенная ошибка ссылки DrawText - PullRequest
1 голос
/ 01 июня 2011

Я создаю пользовательский компонент (производный от TCustomCategoryPanelGroup) и выполняю некоторые пользовательские операции рисования.Я хочу обрабатывать, когда темы включены и рисовать текст соответствующим образом.

Вот фрагмент кода, который у меня есть в функции рисования:

int theBaseDrawFlags = DT_EXPANDTABS | DT_SINGLELINE | DT_VCENTER | DT_LEFT;
theBaseDrawFlags = DrawTextBiDiModeFlags( theBaseDrawFlags );

if ( TCustomCategoryPanelGroup::hsThemed == PanelGroup->HeaderStyle && ThemeServices()->ThemesEnabled )
{
    ThemeServices()->DrawText( ACanvas->Handle, ThemeServices()->GetElementDetails( tebNormalGroupHead ), m_CaptionTopLeft, m_TextRect, theBaseDrawFlags, 0 );
}
else
{
    // Draw without themes
}

Когда я пытаюсь построить это, я получаю ошибку:

Unresolved external __fastcall Themes::TThemeServices::DrawTextA(HDC__ *, Themes::TThemedElementDetails&, const System::WideString, Types::TRect&, unsigned int, unsigned int)' referenced from  ....

AsВы можете видеть, что он ищет DrawTextA.Я посмотрел на заголовок Themes.hpp и определена только функция ThemeServices::DrawText.

Я не уверен, что здесь происходит.Возможно, я подумал, что мне не хватает библиотеки импорта, но все остальные функции ThemeServices, которые я использую, не получают ошибок ссылок.

Кто-нибудь знает, что здесь происходит?

1 Ответ

2 голосов
/ 01 июня 2011

Полагаю, у вас есть #include d какой-то заголовок (windows.h?), Который содержит что-то вроде этого

#ifdef UNICODE
#define DrawText DrawTextW
#else
#define DrawText DrawTextA
#endif

Возможно, вы можете добавить #undef DrawText в ваш файл, чтобы обойти это. (См. Также Конфликт с функцией DrawText .)

...