Я выводя текст из управления trichedit delphi на принтер. Существует фоновое изображение, поэтому я использую EM_FORMATRANGE с этой логикой ...Печать richedit с цветом фона
myrichedit.Perform(EM_FORMATRANGE, 1, Longint(@Range));
... и это работает отлично, за исключением того, когда текст визуализируется всегда имеет белый фон, независимо от цвета рихедита. Любая идея почему?
EDIT: От коментарий:
Range
является RANGEFORMAT
, и присваиваются значения, как это:
Range.hdc := aCanvas.Handle;
Range.hdcTarget := aCanvas.Handle;
LogX := GetDeviceCaps(Range.hdc, LOGPIXELSX);
LogY := GetDeviceCaps(Range.hdc, LOGPIXELSY);
Range.rc.Left := x * 1440 div LogX;
Range.rc.Right := (x+re.ClientWidth) * 1440 div LogX; // (1440=twips/inch)
Range.rc.Top := y * 1440 div LogY;
Range.rc.Bottom := 5000 * 1440 div LogY; // Some bigish number
Range.rcPage := Range.rc;
Range.chrg.cpMin := 0;
Range.chrg.cpMax := -1;
Что такое «Диапазон»? Согласно [MSDN] (http://msdn.microsoft.com/en-us/library/windows/desktop/bb788020%28v=vs.85%29.aspx) это «FORMATRANGE», но вы дали нам нет информации о том, что вы на самом деле передаете в качестве этого параметра. Трудно сказать, что может быть неправильно, если вы не говорите нам, что делаете. :) –
@KenWhite Да, это FORMATRANGE, и все работает так, как вы ожидали, за исключением того, что цвет фона RichEdit не проходит. В любом случае диапазон задает только ручки и информацию о местоположении. Одно из возможных решений - использовать 0 как второй параметр, чтобы он только измерял, затем нарисовал заполненный прямоугольник такого размера, а затем прозрачно нарисовал текст сверху, но это похоже на растрескивание гайки кувалдой ... – Terry
Опять же, вы предоставили нам ** ** ** информацию о том, что вы предоставляете в качестве содержимого «Диапазона». «Пожалуйста, помогите мне. Я не буду говорить вам, что я делаю, но это не работает». очень помогает в предоставлении помощи. Так что «я передаю что-то в« FORMATRANGE »(но я не скажу вам, что вы можете увидеть, если это правильно), но это не работает. Что случилось?». –