Печать RichTextBox-контрола
От: lnu Украина  
Дата: 28.07.03 08:41
Оценка:
Help!!!
На http://codevb.narod.ru/richtextbox_12.html нашел как это можно делать, но код то для VisualBasic, а я работаю с FoxPro. И возникли в результате проблемки с переводом нескольких строк:

Printer.Width
Printer.Height
Printer.ScaleWidth
Printer.ScaleHeight
Printer.Print

Printer.Width пробовал заменять GetDeviceCaps(hdc, HORZRES) // HORZRES=8
но получил совсем другие значения...

Как правильно перевести эти строки?
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник."
Re: Печать RichTextBox-контрола
От: SergH Россия  
Дата: 28.07.03 08:49
Оценка:
Здравствуйте, lnu, Вы писали:

lnu>Printer.Width пробовал заменять GetDeviceCaps(hdc, HORZRES) // HORZRES=8

lnu>но получил совсем другие значения...

А если в твипсы перевести?
Делай что должно, и будь что будет
Re[2]: Печать RichTextBox-контрола
От: lnu Украина  
Дата: 28.07.03 09:22
Оценка:
Здравствуйте, SergH, Вы писали:

SH>Здравствуйте, lnu, Вы писали:


lnu>>Printer.Width пробовал заменять GetDeviceCaps(hdc, HORZRES) // HORZRES=8

lnu>>но получил совсем другие значения...

SH>А если в твипсы перевести?


Как? В WINGDI.H описаны размеры по горизонтали и по вертикали в миллиметрах или в пикселях.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник."
Re[3]: Печать RichTextBox-контрола
От: SergH Россия  
Дата: 28.07.03 09:26
Оценка:
Здравствуйте, lnu, Вы писали:

SH>>А если в твипсы перевести?


lnu>Как? В WINGDI.H описаны размеры по горизонтали и по вертикали в миллиметрах или в пикселях.


Домножить на 1440 и поделить на 25,7, если не ошибаюсь. Т.е. в дюймы а из них в твипсы, только в обратном порядке, чтобы точности не терять. В числе 25,7 я не очень уверен.
Делай что должно, и будь что будет
Re[3]: Печать RichTextBox-контрола
От: kavlad Россия http://www.wavesoft.ru
Дата: 28.07.03 09:32
Оценка:
Здравствуйте, lnu, Вы писали:

SH>>А если в твипсы перевести?


lnu>Как? В WINGDI.H описаны размеры по горизонтали и по вертикали в миллиметрах или в пикселях.


Читеам MSDN
twips = MulDiv( pixels, 1440, dpi )
Нет предела совершенству!
Re[4]: Печать RichTextBox-контрола
От: lnu Украина  
Дата: 28.07.03 10:13
Оценка:
MSDN пишет:
By default, all Visual Basic movement, sizing, and graphical-drawing statements use a unit of one twip. A twip is 1/20 of a printer’s point (1,440 twips equal one inch, and 567 twips equal one centimeter).

GetDeviceCaps(Printer.hdc,8) дает 2338, а Printer.width дает 11904.


/* Device Parameters for GetDeviceCaps() */
#define HORZSIZE 4 /* Horizontal size in millimeters */
#define VERTSIZE 6 /* Vertical size in millimeters */
#define HORZRES 8 /* Horizontal width in pixels */
#define VERTRES 10 /* Vertical height in pixels */


GetDeviceCaps(Printer.hdc,4)*567=112266 — совсем не 11904

В чем прикол?
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник."
Re[5]: Печать RichTextBox-контрола
От: SergH Россия  
Дата: 28.07.03 10:20
Оценка:
Здравствуйте, lnu, Вы писали:

lnu>MSDN пишет:

lnu>By default, all Visual Basic movement, sizing, and graphical-drawing statements use a unit of one twip. A twip is 1/20 of a printer’s point (1,440 twips equal one inch, and 567 twips equal one centimeter).

lnu>GetDeviceCaps(Printer.hdc,8) дает 2338, а Printer.width дает 11904.



lnu>/* Device Parameters for GetDeviceCaps() */

lnu>#define HORZSIZE 4 /* Horizontal size in millimeters */
lnu>#define VERTSIZE 6 /* Vertical size in millimeters */
lnu>#define HORZRES 8 /* Horizontal width in pixels */
lnu>#define VERTRES 10 /* Vertical height in pixels */


lnu>GetDeviceCaps(Printer.hdc,4)*567=112266 — совсем не 11904


lnu>В чем прикол?


На десять раздели, миллиметры и сантиметры немного отличаются. Получилось уже гораздо ближе.
Делай что должно, и будь что будет
Re[5]: Печать RichTextBox-контрола
От: lnu Украина  
Дата: 28.07.03 10:21
Оценка:
Вернее
GetDeviceCaps(Printer.hdc,4)*567/10=11226.6 — совсем не 11904
Близко, но не то.
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник."
Re[6]: Печать RichTextBox-контрола
От: lnu Украина  
Дата: 28.07.03 10:29
Оценка:
И что такое

Printer.ScaleWidth
Printer.ScaleHeight ?
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник."
Re[6]: Печать RichTextBox-контрола
От: SergH Россия  
Дата: 28.07.03 10:29
Оценка:
Здравствуйте, lnu, Вы писали:

lnu>Вернее

lnu>GetDeviceCaps(Printer.hdc,4)*567/10=11226.6 — совсем не 11904
lnu>Близко, но не то.

Тогда наверное это PHYSICALWIDTH.
Делай что должно, и будь что будет
Re[7]: Печать RichTextBox-контрола
От: SergH Россия  
Дата: 28.07.03 10:34
Оценка:
Здравствуйте, lnu, Вы писали:

lnu>И что такое


lnu>Printer.ScaleWidth

lnu>Printer.ScaleHeight ?

возможно

SCALINGFACTORX
SCALINGFACTORY
Делай что должно, и будь что будет
Re[8]: Печать RichTextBox-контрола
От: lnu Украина  
Дата: 28.07.03 12:48
Оценка:
Оказалось, что
Printer.width = GetDeviceCaps(Printer.hdc, PHYSICALWIDTH)/GetDeviceCaps(Printer.hdc, LOGPIXELSX)*1440
Printer.Height= GetDeviceCaps(Printer.hdc, PHYSICALHEIGHT)/GetDeviceCaps(Printer.hdc, LOGPIXELSX)*1440
Printer.ScaleWidth = GetDeviceCaps(Printer.hdc, HORZRES)/GetDeviceCaps(Printer.hdc, LOGPIXELSX)*1440
Printer.ScaleHeight= GetDeviceCaps(Printer.hdc, VERTRES)/GetDeviceCaps(Printer.hdc, LOGPIXELSX)*1440
Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем. Профессионалы построили Титаник."
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.