Visual Basic - RE: Asignar Tamaño de pagina en windows 2000

Life is soft - evento anual de software empresarial
 
Vista:

RE: Asignar Tamaño de pagina en windows 2000

Publicado por Aivan (2 intervenciones) el 19/01/2005 10:25:23
Muchas Gracias Benjo!

He probado tu código y aunque en prinicipio me daba algun problema que otro al final ha acabado funcionando cambiando algunas cosas, las pongo a continuación:

las declaraciones de APIS son las siguientes:

Private Declare Function DocumentProperties Lib \"winspool.drv\" Alias \"DocumentPropertiesA\" (ByVal hWnd As Long, ByVal hPrinter As Long, ByVal pDeviceName As String, pDevModeOutput As Any, pDevModeInput As Any, ByVal fMode As Long) As Long

Private Declare Function ResetDC Lib \"gdi32\" Alias \"ResetDCA\" (ByVal hdc As Long, lpInitData As DEVMODE) As Long

Private Declare Sub CopyMemory Lib \"KERNEL32\" Alias \"RtlMoveMemory\" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)

Y el código que me pasaste quedó de la siguiente forma:

Dim nsize As Long
Dim printerhandle As Long
Dim dmIn As DEVMODE, dmOut As DEVMODE
Dim dmInbuf() As Byte, dmOutbuf() As Byte

OpenPrinter Printer.DeviceName, printerhandle, 0&
\'La función DocumentProperties retorna la longitud del búfer necesario, si se asigna 0 al parámetro fMode. Esta Longitud se utiliza para dimensionar las dos matrices de byte.

nsize = DocumentProperties(Me.hWnd, printerhandle, Printer.DeviceName, 0&, 0&, 0&)

ReDim dmInbuf(nsize): ReDim dmOutbuf(nsize)

nsize = DocumentProperties(MyhWnd, printerhandle, Printer.DeviceName, dmOutbuf(0), dmInbuf(0), DM_OUT_BUFFER Or DM_IN_PROMPT)

Call CopyMemory(dmOut, dmOutbuf(0), Len(dmOut))
nsize = ResetDC(Printer.hdc, dmOut)




Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder