• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Функция GetTextExtentPoint32

  • Автор темы Автор темы george
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
G

george

Выдает на выходе в структуре SIZE бешанные числа (как будто фонт не определен) и в это время функция говорит об успехе ее отработки.
А в DEBUG-файле все нормально. Догадываюсь, что где-то в программе не освобождаю ресурсы от рисования.
Использую смешанный функционал из GDI+ и GDI:
Pen
SolidBrush
HatchBrush
Graphics::DrawLine
Graphics::DrawRectangle
Graphics::FillRectangle
CreateFontIndirect()
GetTextMetrics()
Обычные утечки памяти с помощью Compuware DevPartner Studio вроде отловил.
Где копать ? ;)
 
Попробуй заминить её на стандартную(о такой неразу неслышел)(Win32Api):
function GetTextExtent(DC: HDC; Str: PChar; Count: Integer): Longint;
Вычисляет pазмеpности Str, базиpуясь на текущем выбpанном шpифте.
Паpаметpы:
DC: Идентификатоp контекста устpойства.
Str: Стpока текста.
Count: Число символов в Str.
Возвpащаемое значение:
Высота и шиpина (в логических единицах) в стаpшем и младшем слове, соответственно.
 
Dico
Функция GetTextExtent для Win3.x, в Win32 врядли будет работать.
george
Из твоего описания непонятно как ты саму функцию GetTextExtentPoint32 реализуешь. Попробуй не меняя шрифта в контексте устройства, применить эту функцию и посмотри что она покажет.
 
Всем спасибо!
Причины оказались банальными: не везде освобождал HFONT и к тому же пытался определить строку из одного символа, а сам под нее отвел не char[2], а char[1].
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab