Помогите

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

  1. BadBalance

    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((
     
  2. Tanya

    Tanya Гость

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

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

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

    BadBalance Гость

    я пробовал, он пишет "не соответствие типов"...
    а когда к делаю:
    Код (Text):
    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 Гость

    изменил код на:
    Код (Text):
        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..." и код выполняется как:
    Код (Text):
        cmdLoad.CancelError = True
    cmdLoad.ShowPrinter
    For X = 0 To cmdLoad.Copies - 1
    Printer.Orientation = 2
    FrmMain.Refresh
    FrmMain.PrintForm
    Next
    Неужели никто не знает почему?!?
     
Загрузка...

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