Помогите

  • Автор темы BadBalance
  • Дата начала
B

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((
 
T

Tanya

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

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

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

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). Но другие программы печатают нормально
 
B

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
Неужели никто не знает почему?!?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!