Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите
Форум программистов > Системное программирование > Visual Basic
BadBalance
Используя ниже указанный код дома на компе, все печатает как надо, а этот же код на работе, то печатает пустой лист.
что мне делать? Sad
Заранее спасибо!


Код:

Public Declare Function StretchBlt Lib "gdi32" _
(ByVal hDC As Long, ByVal x As Long, ByVal y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, _
ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, _
ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

Private Sub Print_Me()
Printer.Orientation = 2
Printer.ScaleMode = vbPixels
FrmMain.ScaleMode = vbPixels
Printer.Print
Call StretchBlt(Printer.hDC, 0, 0, Printer.ScaleWidth, Printer.ScaleHeight, _
FrmMain.hDC, 0, 0, FrmMain.ScaleWidth, FrmMain.ScaleHeight, vbSrcCopy)
Printer.EndDoc
Exit Sub

Он не реагирует на "Call StretchBlt..." (мне так кажется) Есть другая API функция?

Люди помогите отыскать какой нибудь Контрол для печати, пожалуйста!!! Sad((
Tanya
вместо StretchBlt можно использовать вбэшную функцию:

Printer.PaintPicture FrmMain, 0, 0, Printer.ScaleWidth, Printer.ScaleHeight, _
0, 0, FrmMain.ScaleWidth, FrmMain.ScaleHeight, vbSrcCopy

может поможет?
BadBalance
Цитата
вместо StretchBlt можно использовать вбэшную функцию:

Printer.PaintPicture FrmMain, 0, 0, Printer.ScaleWidth, Printer.ScaleHeight, _
0, 0, FrmMain.ScaleWidth, FrmMain.ScaleHeight, vbSrcCopy

может поможет?


я пробовал, он пишет "не соответствие типов"...
а когда к делаю:
Dim tmp as Long
tmp  = StretchBlt(Printer.hDC, 0, 0, Printer.ScaleWidth, Printer.ScaleHeight, _
FrmMain.hDC, 0, 0, FrmMain.ScaleWidth, FrmMain.ScaleHeight, vbSrcCopy)
' tmp Return 0!!!??


P.S. Не знаю имеет ли это какое то значение, но на работе принтер находится в сети (LAN). Но другие программы печатают нормально
BadBalance
изменил код на:
    Printer.ScaleMode = vbPixels
    FrmMain.ScaleMode = vbPixels
    cmdLoad.CancelError = True
    cmdLoad.ShowPrinter
For X = 0 To cmdLoad.Copies - 1
    Printer.Orientation = 2
    Call SetStretchBltMode(FrmMain.hDC, 3)
    Call StretchBlt(Printer.hDC, 100, 100, Printer.ScaleWidth, Printer.ScaleHeight, _
        FrmMain.hDC, 100, 100, FrmMain.ScaleWidth, FrmMain.ScaleHeight, vbSrcCopy)
    FrmMain.Refresh
    FrmMain.PrintForm
Next

вроде заработало, но проблема в том что, он попрежнему не хочет реагировать на АПИ функцию "Call StretchBlt..." и код выполняется как:
    cmdLoad.CancelError = True
    cmdLoad.ShowPrinter
For X = 0 To cmdLoad.Copies - 1
    Printer.Orientation = 2
    FrmMain.Refresh
    FrmMain.PrintForm
Next

Неужели никто не знает почему?!?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.