würde gerne mittels Editorgadget einen rtf-formatierten Text darstellen. Geht das überhaupt?
Bar jeder Ahnung war die Überlegung, mittels
Code: Alles auswählen
rftext:
IncludeBinary "C:\...\rtf-text.rtf"
Code: Alles auswählen
rftext:
IncludeBinary "C:\...\rtf-text.rtf"
Code: Alles auswählen
;-TOP
; *****************************************************************************
; AddTextRTF by mk-soft, v1.05, 27.03.2018
CompilerIf #PB_Compiler_Version < 550
Procedure Ascii(Text.s)
Protected *mem = AllocateMemory(StringByteLength(Text, #PB_Ascii) + 1)
If *mem
PokeS(*mem, Text, -1, #PB_Ascii)
EndIf
ProcedureReturn *mem
EndProcedure
Procedure UTF8(Text.s)
Protected *mem = AllocateMemory(StringByteLength(Text, #PB_UTF8) + 1)
If *mem
PokeS(*mem, Text, -1, #PB_UTF8)
EndIf
ProcedureReturn *mem
EndProcedure
CompilerEndIf
Procedure AddTextRTF(Gadget, Text.s , NewLine=#False)
If Left(Text, 5) <> "{\rtf"
Text = "{\rtf " + Text + "}"
EndIf
If NewLine
Text = Left(Text, Len(text) - 1) + "\line}"
EndIf
CompilerIf #PB_Compiler_Unicode
Protected hEdit = GadgetID(Gadget)
Protected ndx = GetWindowTextLength_(hEdit)
Protected *szBuffer = Ascii(Text)
SendMessage_(hEdit, #EM_SETSEL, ndx, ndx)
SendMessage_(hEdit, #EM_REPLACESEL, 0, *szBuffer)
FreeMemory(*szBuffer)
CompilerElse
AddGadgetItem(Gadget, -1 , Text)
CompilerEndIf
EndProcedure
; *****************************************************************************
If OpenWindow(0, 0, 0, 540, 260, "Richedit Unicode EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(0, 5, 5, 530, 250)
SendMessage_(GadgetID(0), #EM_SETTEXTMODE, #TM_RICHTEXT, 0)
Global Notiz$
Global a$ = ""
a$ + "{\rtf1\ansi\ansicpg1252\deff0\deflang1031\deflangfe1031{\fonttbl{\f0\fswiss\fprq2\fcharset0 Verdana;}{\f1\fswiss\fprq2\fcharset0 Segoe WP SemiLight;}}"
a$ + "{\colortbl ;\red0\green128\blue128;\red51\green51\blue51;}"
a$ + "{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\nowidctlpar\cf1\f0\fs20 So kennen wir den \'84Riverdale\ldblquote -Star gar nicht. \cf2\f1 (was so viel wie \'84Baumwollburg\ldblquote bedeutet)\cf1\f0\par"
a$ + "\cf1\ul\b\i\fs28 APPNAME é à ç è ê @ €"
a$ + "}"
AddTextRTF(0, a$)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Code: Alles auswählen
;-TOP
; *****************************************************************************
; AddTextRTF by mk-soft, v1.05, 27.03.2018
CompilerIf #PB_Compiler_Version < 550
Procedure Ascii(Text.s)
Protected *mem = AllocateMemory(StringByteLength(Text, #PB_Ascii) + 1)
If *mem
PokeS(*mem, Text, -1, #PB_Ascii)
EndIf
ProcedureReturn *mem
EndProcedure
Procedure UTF8(Text.s)
Protected *mem = AllocateMemory(StringByteLength(Text, #PB_UTF8) + 1)
If *mem
PokeS(*mem, Text, -1, #PB_UTF8)
EndIf
ProcedureReturn *mem
EndProcedure
CompilerEndIf
Procedure AddTextRTF(Gadget, Text.s , NewLine=#False)
If Left(Text, 5) <> "{\rtf"
Text = "{\rtf " + Text + "}"
EndIf
If NewLine
Text = Left(Text, Len(text) - 1) + "\line}"
EndIf
CompilerIf #PB_Compiler_Unicode
Protected hEdit = GadgetID(Gadget)
Protected ndx = GetWindowTextLength_(hEdit)
Protected *szBuffer = Ascii(Text)
SendMessage_(hEdit, #EM_SETSEL, ndx, ndx)
SendMessage_(hEdit, #EM_REPLACESEL, 0, *szBuffer)
FreeMemory(*szBuffer)
CompilerElse
AddGadgetItem(Gadget, -1 , Text)
CompilerEndIf
EndProcedure
; ----
Procedure CatchTextRTF(Gadget, *szTextRTF)
If *szTextRTF
SendMessage_(GadgetID(Gadget), #WM_SETTEXT, 0, *szTextRTF)
EndIf
EndProcedure
; *****************************************************************************
CompilerIf #PB_Compiler_IsMainFile
If OpenWindow(0, 0, 0, 540, 260, "Richedit Unicode EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
EditorGadget(0, 5, 5, 530, 250)
SendMessage_(GadgetID(0), #EM_SETTEXTMODE, #TM_RICHTEXT, 0)
Global Notiz$
Global a$ = ""
a$ + "{\rtf1\ansi\ansicpg1252\deff0\deflang1031\deflangfe1031{\fonttbl{\f0\fswiss\fprq2\fcharset0 Verdana;}{\f1\fswiss\fprq2\fcharset0 Segoe WP SemiLight;}}"
a$ + "{\colortbl ;\red0\green128\blue128;\red51\green51\blue51;}"
a$ + "{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\nowidctlpar\cf1\f0\fs20 So kennen wir den \'84Riverdale\ldblquote -Star gar nicht. \cf2\f1 (was so viel wie \'84Baumwollburg\ldblquote bedeutet)\cf1\f0\par"
a$ + "\cf1\ul\b\i\fs28 APPNAME é à ç è ê @ €"
a$ + "}"
;AddTextRTF(0, a$)
CatchTextRTF(0, ?rtfText)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
DataSection
rtfText:
IncludeBinary "ReadMe.rtf"
Data.w 0
EndDataSection
CompilerEndIf