Newsgroup: it.comp.lang.visual-basic
Titolo: [VB5] Qualche consiglio su API DrawText, StartDoc & C.

Ola!,
    ho cercato di stampare con le API StartDoc, StartPage, DrawText, EndPage
e EndDoc, ma c'è qualcosa che non mi torna ...
faccio più o meno così:
    dim info as DOCINFO
    info.lpszDocName = "Stampa"
    info.lpszDatatype = vbNullString
    info.lpszOutput = vbNullString
    info.cbSize = Len(informazioniDocumento)
    'qui setto tutti i parametri per il font della stampante,
    'in particolare
    printer.scaleMode=vbPixels
    StartDoc(printer.hdc, info)
    StartPage(printer.hdc)
    SetRect area, x1,y1,x2,y2
    'tmp è la var che contiene le stringa da stampare
    DrawText Printer.hdc, tmp, CLng(Len(tmp)), area, DT_LEFT + DT_TOP +
DT_SINGLELINE + DT_NOCLIP + DT_END_ELLIPSIS
La stampa parte e sembra che funzioni, invece attende un po' e poi mi butta
fuori il foglio bianco.
Se al posto di printer.hdc metto form1.hdc la stringa viene visualizzata
correttamente sul form
Suggerimenti?
--
_,,=~°°~=,,_,,=~°°~=,,_
byZ, doGmaI
ICQ#170836495
_,,=~°°~=,,_,,=~°°~=,,_

 info.cbSize = Len(informazioniDocumento)
 
      ma non dovrebbe essere
           info.cbSize = Len(info)
      e dove sono
         Call EndPage(Printer.hdc)
         Call EndDoc(Printer.hdc)
 
     ???
 
 Ciaoo
  Ciao
--------------------------------
Inviato via 
http://usenet.libero.it

          Call EndDoc(Printer.hdc)
Ci sono. Vedi il motivo sopra



 
 Ok, ora non ho una stampante a disposizione domani provo e ti faccio sapere,
anche se mi ricordo di aver fatto qualcosa di simile e non ho avuto
problemi.
 Domani guardo.



 Il codice che segue funzia!!! Ciaoooo
Private Type DOCINFO
        cbSize As Long
        lpszDocName As String
        lpszOutput As String
        lpszDatatype As String
        fwType As Long
End Type
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Const DT_CENTER = &H1
Dim MyRect As RECT
Dim DI As DOCINFO
 
    DI.cbSize = Len(DI)
    DI.lpszDocName = "API-Guide Code Demonstration"
    DI.lpszOutput = vbNullString
    DI.lpszDatatype = vbNullString
 
    Call StartDoc(Printer.hdc, DI)
    Call StartPage(Printer.hdc)
    MyRect.Left = 0
    MyRect.Top = 0
    MyRect.Right = Printer.ScaleWidth
    MyRect.Bottom = Printer.ScaleHeight
 
    Result = DrawText(Printer.hdc, "Enjoy!!!", Len("Enjoy!!!"), MyRect,
DT_CENTER)
 
    Call EndPage(Printer.hdc)
    Call EndDoc(Printer.hdc)


Me.ScaleMode = vbPixels


  Il codice che segue funzia!!! Ciaoooo
Non l'ho mai specificato, ma ho una CANON BJC6000 (magari fosse nota qualche
incompatibilità misteriosa) e WinXP Pro+SP1


 incompatibilità misteriosa) e WinXP Pro+SP1
 Domani cerco.
 Ciaooo


 >Me.ScaleMode = vbPixels
  Vero!!!!
Ciao



 Prova questo codice alterantivo ( anch'esso funzionate sulla mia stampante !
). Ciao
    Printer.Font.Size = 10
    Printer.ScaleMode = vbPixels
    MyRect.Left = 0
    MyRect.Top = 0
    MyRect.Right = Printer.ScaleWidth
    MyRect.Bottom = Printer.ScaleHeight
    Printer.Print ""
 
    Result = DrawText(Printer.hdc, "Enjoy!!!", Len("Enjoy!!!"), MyRect,
DT_CENTER)
 
    Printer.EndDoc


 ). Ciao
Questo ha funzionato, anche se la riga printer.print "" ho dovuto eliminarla
perchè provocava un errore 482 (errore di stampante).
Penso di aver scoperto cos'era il problema: io usavo come allineamento
DT_LEFT Or DT_TOP Or DT_NOCLIP Or DT_END_ELLIPSIS
dove i valori delle varie costanti li ho recuperati direttamente da MSDN
on-line.
Togliendo tutto e lasciando solo DT_END_ELLIPSIS funziona bene. Io l'ho
tolta e la stampa va però se la stringa che devo stampare non dovesse
rientrare nei margini che voglio io, la stampa finisce sul bordo del foglio
:( Non è certo piacevole
Cmq, intanto grazie


 perchè provocava un errore 482 (errore di stampante).
 
  Strano sulla stampante che ho a lavoro se non lo metto non stampa
invece...ma questa cosa del "printer.print "" " l' avevo verificato anche su
altre stampanti e non mi hanno mai dato errore, mo cerco qualcosa riguardo
la tua!
 
  Per il resto forse dipende da caratterisctiche non supportate dalla tua
stampante però mi pare strano, prova con word e guarda se in certi casi ti
da gli stessi problemi ( nel senso che stampa male, ma ci credo poco, quindi
se ci riesce Word ci dobbiamo riuscire anche noi !!!! ).
Cmq intanto un passo avanti lo abbiamo fatto :D
Ciao
