sigmatc24
Messages postés53Date d'inscriptiondimanche 29 avril 2007StatutMembreDernière intervention22 avril 2013 27 déc. 2007 à 15:19
C'est exactement je ce que j'ai fait avant de poser cette question.
Le contrôle Code à barres crée un bitmap que je dessine sur le report à l'aide de PrintPreview. mais ce bitmap est inutilisable bien que dessiné très correctement, les barres apparaissent très clairement. Quand je le scanne avec la douchette...non reconnu
Je suis vraiment perdu là
Vous n’avez pas trouvé la réponse que vous recherchez ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 27 déc. 2007 à 23:03
Les souvenirs VB sont trop loin, je n'écrirais que des aneries.
Je préfère laisser cela à Renfield.
Je profire pour corriger l'erreur de frappe: DeleteDC(hdc)
C'est PrintDlgA() de comdlg32.dll qu'il faudra appeler depuis VB (version ANSI).
Essayons d'avancer malgré tout:
version simplifiée perso de la struct C que tu dois mettre en format 'Type' VB:
typedef struct tagPD {
Long lStructSize;
Long hwndOwner;
Long hDevMode;
Long hDevNames;
Long hDC;
Long Flags;
Long nFromPage;
Long nA;
Long nCopies;
Long hInstance;
Long lCustData;
Long lpfnPrintHook;
Long lpfnSetupHook;
Long lpPrintTemplateName;
Long lpSetupTemplateName;
Long hPrintTemplate;
Long hSetupTemplate;
} PRINTDLG, *LPPRINTDLG;
17 membres de 4 octets, tu mets donc pd.lStructSize = 68
pd.nCopies = 65536 ' nCopies est en fait le HIWORD, 0 dans le LOWORD
pd.hwndOwner = hOwner ' hwnd de la fenetre appelante, pas obligatoire tu mets 0
pd.Flags = 1280
et tu mets ' = 0' tous les autres membre, tu éviteras l'appel memset().
Prépare tout cela en sytaxe VB et le Declare Function...
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 28 déc. 2007 à 07:59
J'ai pris les déclarations VBisées de API Viewer...
J'ai renommé la fonction pour y glisser le verbe 'Create' pour aider à penser qu'il faut un DeleteDc...
Private Type PrintDlg
lStructSize As Long
hwndOwner As Long
hDevMode As Long
hDevNames As Long
hdc As Long
flags As Long
nFromPage As Integer
nToPage As Integer
nMinPage As Integer
nMaxPage As Integer
nCopies As Integer
hInstance As Long
lCustData As Long
lpfnPrintHook As Long
lpfnSetupHook As Long
lpPrintTemplateName As String
lpSetupTemplateName As String
hPrintTemplate As Long
hSetupTemplate As Long
End Type
Private Const PD_RETURNDC As Long = &H100
Private Const PD_RETURNDEFAULT As Long = &H400
Private Declare Function PrintDlg Lib "comdlg32.dll" Alias "PrintDlgA" (ByRef pPrintdlg As PrintDlg) As Long
Private Declare Function DeleteDC Lib "gdi32.dll" (ByVal hdc As Long) As Long
Private Function CreateDefPrinterDc() As Long
Dim tPd As PrintDlg
With tPd
.nCopies = 1
.lStructSize = LenB(tPd)
.flags = PD_RETURNDC Or PD_RETURNDEFAULT
PrintDlg tPd
CreateDefPrinterDc = .hdc
End With
End Function
Private Sub Form_Load()
Dim hPrinterDc As Long
hPrinterDc = CreateDefPrinterDc()
If hPrinterDc Then
'# ... le traitement que tu souhaites
DeleteDC hPrinterDc
End If
End Sub