Помогите

Тема в разделе "Visual Basic", создана пользователем BadBalance, 29 май 2008.

  1. BadBalance

    BadBalance Гость

    Репутация:
    0
    Используя ниже указанный код дома на компе, все печатает как надо, а этот же код на работе, то печатает пустой лист.
    что мне делать? 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((
     
  2. Tanya

    Tanya Гость

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

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

    может поможет?
     
  3. BadBalance

    BadBalance Гость

    Репутация:
    0
    я пробовал, он пишет "не соответствие типов"...
    а когда к делаю:
    Код:
    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). Но другие программы печатают нормально
     
  4. BadBalance

    BadBalance Гость

    Репутация:
    0
    изменил код на:
    Код:
    	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
    Неужели никто не знает почему?!?
     
Загрузка...

Поделиться этой страницей