Probleme mit Ausdruck
Verfasst: 13.04.2006 11:21
Hallo
Hab mir eine Routiene erstellt die einen Bereich des Bildschirms captured, um 90 Grad dreht, mit einer Beschreibung versieht und Ausdruckt.
Das Funktioniert soweit perfekt. Jedoch wenn ich nach dem Ausdruck versuche eine DB Connection (PBOSL) herzustellen, bekomme ich immer "Invalid Memory Access".
Was mache ich falsch??
Code ist leider noch PB3.94 wie auch die PBOSL.
Arrag0n
Hab mir eine Routiene erstellt die einen Bereich des Bildschirms captured, um 90 Grad dreht, mit einer Beschreibung versieht und Ausdruckt.
Das Funktioniert soweit perfekt. Jedoch wenn ich nach dem Ausdruck versuche eine DB Connection (PBOSL) herzustellen, bekomme ich immer "Invalid Memory Access".
Was mache ich falsch??

Code ist leider noch PB3.94 wie auch die PBOSL.
Code: Alles auswählen
Procedure PrintGraph() ;Desktop Ausschnitt "Capturen" und drucken mit WinApi
If hwnd_Graph
hBmp.l = CreateImage(0, 2000, 2000)
hdcWnd.l = GetDC_(hwnd_Graph)
hDektop.l = GetDesktopWindow_()
hdcDesktop.l = GetDC_(hdcDesktop)
hdcBmp = CreateCompatibleDC_(hdcWnd)
SelectObject_(hdcBmp,hBmp)
;Standardrucker-Namen ermitteln
PrinterHandle.l = 0
STDPrinterName$ = Space(260)
GetPrivateProfileString_("WINDOWS","DEVICE","", @STDPrinterName$, 260, "Win.Ini")
STDPrinterName$ = StringField(STDPrinterName$, 1,",")
OpenPrinter_(STDPrinterName$,@PrinterHandle.l,0)
Dim DevIn.DEVMODE(0)
Dim DevOut.DEVMODE(0)
DocumentProperties_(0,PrinterHandle,STDPrinterName$,DevIn(0),DevOut(0),#DM_OUT_BUFFER|#DM_IN_BUFFER)
DevIn(0)\dmOrientation = 2 ;auf Querdruck setzen
PrinterDC.l = CreateDC_("WINSPOOL",STDPrinterName$,0,DevIn(0))
DocInf.DOCINFO
DocInf\cbSize = SizeOf(DOCINFO)
DocInf\lpszDocName = @"TWE-DL"
DocInf\lpszOutput = #Null
PrinterWidth = GetDeviceCaps_(PrinterDC, #HORZRES)
PrinterHeight = GetDeviceCaps_(PrinterDC, #VERTRES)
If StartDoc_(PrinterDC,@DocInf) > 0
If StartPage_(PrinterDC) > 0
SetTextAlign_(PrinterDC,#TA_CENTER)
SetBkMode_(PrinterDC, #TRANSPARENT)
SetTextColor_(PrinterDC, RGB(0, 0, 90))
TextOut_(PrinterDC,PrinterWidth/2,170,"TWE - DL ",52)
SetTextAlign_(PrinterDC,#TA_LEFT)
SetTextColor_(PrinterDC, RGB(0,0,0))
txtOutD.s = "Bereich : " + GetGadgetText(#cmb_Era) + " Beginn : " + GetGadgetText(#cmb_Day)+"."+GetGadgetText(#cmb_Month)+"."+Str(ActiveYear)+" - "+GetGadgetText(#cmb_Hour)+":00"
TextOut_(PrinterDC,200,250,txtOutD,Len(txtOutD))
SetTextColor_(PrinterDC, RGB(255,50,39)) ; Beschreibung Feed A
txtFeedA.s = GetGadgetText(#cmb_FeedA)
TextOut_(PrinterDC,200,310,txtFeedA,Len(txtFeedA))
SetTextColor_(PrinterDC, RGB(107,255,56)) ; Beschreibung Feed B
txtFeedB.s = GetGadgetText(#cmb_FeedB)
TextOut_(PrinterDC,1400,310,txtFeedB,Len(txtFeedB))
SetTextColor_(PrinterDC, RGB(70,0,230)) ; Beschreibung Feed C
txtFeedC.s = GetGadgetText(#cmb_FeedC)
TextOut_(PrinterDC,2600,310,txtFeedC,Len(txtFeedC))
imgDC = ImageID()
hdc = CreateCompatibleDC_(PrinterDC)
SelectObject_(hdc, imgDC)
;StretchBlt_(PrinterDC,200,380,PrinterWidth -380 ,PrinterHeight -430 ,hdcDesktop,15,204,995,548,#SRCCOPY)
StretchBlt_(PrinterDC,200,380, 380 , 430 ,hdcDesktop,15,204,995,548,#SRCCOPY)
EndPage_(PrinterDC)
EndDoc_(PrinterDC)
DeleteDC_(hdc)
DeleteDC_(PrinterDC)
EndIf
EndIf
ClosePrinter_(PrinterHandle)
EndIf
DeleteDC_(hdcBmp)
FreeImage(0)
EndProcedure