Как работает функция DrawText?

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Vet_chv
Сообщения: 17
Зарегистрирован: 16 июн 2006, 13:04
Контактная информация:

Подскажите пожалуйста (на примере) как работает функция DrawText. Не разберусь со вторым параметром. :(
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

А в чем проблема-то? 2-й параметр - указатель на строковый буфер. Что с ним не так?
Vet_chv
Сообщения: 17
Зарегистрирован: 16 июн 2006, 13:04
Контактная информация:

Просто я не пойму как именно это должно выглядеть. Что значит строковый буфер? Я пробую содержимое поля Мемо вывести на екран. Вот и пытаюсь разобраться в функции DrawText.
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

DrawText() - API-шная функция, строка передается в нее как указатель на массив символов, заканчивающийся 0-байтом.
TMemo.Text имеет тип String, соостветственно, при передаче в DrawText надо явно привести его к типу PChar:

Код: Выделить всё

var rect: TRect;
      flag: UINT;
begin
  ...
  rect := // здесь задаешь координаты прямоугольника, куда будет вписан текст
  flag := // то же для флагов
  DrawText(Canvas.Handle, PChar(memo.Text), Length(memo.Text), rect, flag);
  ...
См. также http://msdn.microsoft.com/library/defau ... t_0odw.asp
и раздел Delphi Help "String to PChar conversions"
Vet_chv
Сообщения: 17
Зарегистрирован: 16 июн 2006, 13:04
Контактная информация:

а как правильно задать кординаты прямоугольника? я задаю в скобках через запятую (100,100,800,800), а в ответ ошибка:
[Error] Monitor.pas(37): ')' expected but ',' found. Подскажи пожалуйста, что не так?
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Можно так:

Код: Выделить всё

with rect do begin
  left := 100;
  top := 100;
  right := 800;
  bottom := 800;
end;
Ответить