ich versuche gerade ein RTF in ein Image umzuwandeln, bzw. auf ein Canvas zu zeichnen. Aber ich finde leider keine Lösung -.-
Das Laden eines RTF-Dokumentes in ein EditorGadget stellt kein Problem da.
Ich habe folgenden Code mal versucht nach PB zu portieren, aber leider funktioniert das nicht
http://www.swissdelphicenter.com/de/sho ... hp?id=2146
Code: Alles auswählen
Procedure StreamFileIn_Callback(hFile, pbBuff, cb, pcb)
ProcedureReturn ReadFile_(hFile, pbBuff, cb, pcb, 0)!1
EndProcedure
Procedure FileStreamIn(FileID.l, File.s, Gadget.l,Option.l)
Protected StreamData.EDITSTREAM
If ReadFile(FileID, File)
StreamData\dwCookie = FileID(FileID)
StreamData\dwError = #Null
StreamData\pfnCallback = @StreamFileIn_Callback()
SendMessage_(GadgetID(Gadget), #EM_STREAMIN, Option, @StreamData)
CloseFile(FileID)
EndIf
EndProcedure
Procedure RichEditToCanvas(RichEdit, Canvas)
cRect.RECT
FormatRange.FORMATRANGE
hdc = GadgetID(Canvas)
hdcTarget = hdc
SetRect_(cRect, 0, 0, 2000, 2000) ; Testwerte
FormatRange\hdc = hdc
FormatRange\hdcTarget = hdcTarget
FormatRange\rc\left = cRect\left
FormatRange\rc\top = cRect\top
FormatRange\rc\right = cRect\right
FormatRange\rc\bottom = cRect\bottom
FormatRange\rcPage\left = cRect\left
FormatRange\rcPage\top = cRect\top
FormatRange\rcPage\right = cRect\right
FormatRange\rcPage\bottom = cRect\bottom
FormatRange\chrg\cpMax = Len(GetGadgetText(RichEdit)) - SendMessage_(GadgetID(RichEdit),#EM_GETLINECOUNT,0,0)
FormatRange\chrg\cpMin = 0
SetBkMode_(GadgetID(Canvas), #TRANSPARENT);
SendMessage_(GadgetID(RichEdit),#EM_FORMATRANGE, 1, @FormatRange)
; Next call frees some cached Data
SendMessage_(GadgetID(RichEdit),#EM_FORMATRANGE, 0, 0)
EndProcedure
If OpenWindow(0, 10, 10, 640, 480,"PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered)
EditorGadget(1, 0, 0, WindowWidth(0)-100,WindowHeight(0))
ButtonGadget(2, WindowWidth(0)-90,10,80,24,"Drucken")
ButtonGadget(3, WindowWidth(0)-90,40,80,24,"Laden")
CanvasGadget(4, 0, 0, WindowWidth(0)-100,WindowHeight(0))
HideGadget(1, 1)
Repeat
EventID.l = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
If EventID = #PB_Event_Gadget
Select EventGadget()
Case 2
RichEditToCanvas(1, 4)
Case 3
DName$ = OpenFileRequester("Datei laden :","*.*", "Text-Dateien|*.txt|Rich Text Files|*.rtf|Alle Dateien|*.*", 0)
;DName$ = "C:\Documents And Settings\Administrator\Desktop\Kopie von mail_text.rtf"
If UCase(GetExtensionPart(DName$)) = "RTF"
FileStreamIn(0,DName$, 1,#SF_RTF)
Else
FileStreamIn(0,DName$, 1,#SF_TEXT)
EndIf
EndSelect
EndIf
Until Quit = 1
EndIf
End