|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
Доброго времени суток всем! Собратья, помогите советом или делом или еще чем-нибудь. Дело такое: В программе на VB6 для печати неких документов используется api-функция SetTextJustification для выравнивания текста по ширине. До недавнего времени, пока программа запускалась на ХР, все было замечательно, так как функция прекрасно выполняла свою задачу как при выводе текста на принтер, так и при выводе его же на экранную форму. Теперь же, с переходом на Windows 7, происходит что-то непонятное. Функция прекрасно отрабатывает при выводе текста на экранную форму, но ничего не делает при выводе на принтер (причем, не важно какой: реальный или виртуальный, типа MS Image Writer или какой-нить goPdf). Кто-нибудь сталкивался с подобной проблемой? Или есть какие-нибудь соображения по этому поводу? ...and the Hades came close behind him... (Revelations 6:8) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 10:18 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
Win7 и VB6 - непонятное сочетание. Надо что то менять. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 11:39 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
Есть более конструктивные и менее схоластические идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 12:35 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
Есть. А есть что то конкретное в коде? Что за программа и зачем она нужна? Почему апи? И зачем VB6? На Win7 многое работает не так как на хрюше. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 12:43 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
VB6 - потому что так исторически сложилось ) Программа нужна, как уже говорилось, для печати документов. API-функция - потому что по-другому сделать выключку никак нельзя. Вру, можно, но для этого потребуется провести злобные вычисления положения каждого слова (или буквы) в каждой строке блока текста с учетом ширины пробелов так, чтобы блок текста выравнивался по ширине. Объявлено так: Код: vbnet 1.
Вызывается так: Код: vbnet 1. 2. 3.
если DC = Form1.hDC, то на форме все ОК если DC = Printer.hDC, то на листе вместо блока текста, выровненного по ширине, получаем блок текста, выровненный по левому краю ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 13:39 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
Вывести на форму, скопировать на принтер как картинку. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 14:06 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
AntonariyВывести на форму, скопировать на принтер как картинку. Я даже в голос посмеялся. Объем печати - миллионы листов. С таким костылем это будет долго ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 14:15 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
авторОбъявлено так: Private Declare Function SetTextJustification& Lib "gdi32" (ByVal hDC As Long, ByVal nBreakExtra As Long, ByVal nBreakCount As Long) As Long? Сама? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 14:18 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
ornitopterЯ даже в голос посмеялся. Объем печати - миллионы листов. С таким костылем это будет долго )))ornitopterVB6 - потому что так исторически сложилосьВ свою очередь посмеялся над выбором инструмента для решения такой задачи. Копайте в сторону настроек dc. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 14:26 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
AntonariyВ свою очередь посмеялся над выбором инструмента для решения такой задачи. Копайте в сторону настроек dc. До перехода на Win7 инструмент справлялся с задачей полностью )) И можно по-подробней на счет настроек DC? Какие именно? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 14:31 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
у вас случаем на x64 операционка? есть подозрение, что причина в том, что данная ф-я находится в библиотеке gdi32. аналогичная проблема может проявляться и в Vista. скорее всего проблема драйвера принтера ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 15:27 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
Konst_Oneу вас случаем на x64 операционка? Проверяли уже ) Разрядность значения не имеет. Одинаково не работает как на 32- так и на 64-битных семерках. В Висте не проверяли - по причине отсутствия таковой. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 15:36 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
поищите в гугле, там кто-то на немецком форуме вроде отписывал по аналогичному случаю, может поможет ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 15:38 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
все чудесатее и чудесатее )) вот так Код: vbnet 1.
работает почему раньше DrawText прекрасно работал с SetTextJustification как для DC экранных форм, так и для DC принтера? загадка. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 16:41 |
|
VB6 + win7 + SetTextJustification
|
|||
---|---|---|---|
#18+
ornitopter, SetTextJustification function > бла-бла-бла > ... > Return value If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. > Remarks > The break character is usually the space character (ASCII 32), but it may be defined by a font as some other character. > The GetTextMetrics function can be used to retrieve a font's break character. and so on... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 20:21 |
|
|
start [/forum/topic.php?fid=60&msg=37952599&tid=2157450]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 285ms |
total: | 431ms |
0 / 0 |