Der MDI-Gadget-Vorschlag ist prima, AND51. Das werde ich mir mal noch genauer ansehen.
Danke ts-soft für den Hinweis auf das Include-Pack. Das ist ja ein richtiges Schlachtschiff
Mittlerweile habe ich ausprobiert, dass Win98 mit RTF anscheinend nicht umgehen kann. Dort wird im Fenster dann der RTF-Sourcetext angezeigt. Und Unicode gibt es dort ja dort auch noch nicht. Daher möchte ich möglichst schnell den Text in Ascii wandeln, falls er (unter XP oder 2000) unicode enthält. Den Code hierfür habe ich schon geschrieben (anbei).
Den Prototype (Demo-Version) habe ich entfernt. Edel schrieb aber, dass die EDITSTREAM-Geschichte nur bei kurzen Texten geht, wenn ich das richtig verstanden habe. Mit der Vollversion geht es wahrscheinlich ganz einfach, aber ich habe etwas den Überblick verloren. Kannst du mir eine Hilfe geben bzw. den Code abändern?
Code: Alles auswählen
;Prototype SendMessage(hwnd,msg,wParam,lParam)
;OpenLibrary(0,"User32.dll")
;Global SendMessage_.SendMessage = GetFunction(0,"SendMessageA")
;PB4
; ************* Variables *************
Global a$
Fensterueberschrift$ = "Unicode-Test"
Button_1 = 20 ; Button-ID
Global FontID1
FontID1 = LoadFont(1, "Courier", 10) ; Font für die Darstellung
;RTF- Test
text$="{\rtf1\fbidis\ansi\ansicpg1252\deff0\deflang1031{\fonttbl{\f0\fmodern\fprq1\fcharset0 Courier New;}{\f1\fswiss\fprq2\fcharset0 Arial;}}"
text$=text$ + "{\colortbl ;\red0\green0\blue0;}"
text$=text$ + "\viewkind4\uc1\pard\ltrpar\cf1\f0\fs20 Unicode: \u264?\u284?\u292?\u308?\u348?\u364?\u265?\u285?\u293?\u309?\u349?\u365?\cf0\f1\par "
text$=text$ + "}"
#WM_SETTEXT = 12
#SF_RTF = 2
#EM_STREAMOUT = 1098
CompilerIf Defined(EDITSTREAM,#PB_Structure) = 0
Structure EDITSTREAM
dwCookie.l
dwError.l
pfnCallback.l
EndStructure
CompilerEndIf
; ************* Mainprogram *************
Procedure StreamOut(dwCookie,pbBuff,cb,*pcb)
SetGadgetText(dwCookie,PeekS(pbBuff))
A$ = PeekS(pbBuff)
EndProcedure
If OpenWindow(0, 1, 1, 800, 350, Fensterueberschrift$, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
SetWindowColor(0,RGB(100, 150, 100))
CreateGadgetList(WindowID(0))
EditorGadget(1, 20, 50, 650, 110) ;#PB_Editor_ReadOnly
SetGadgetFont(1, FontID1)
EditorGadget(2, 20, 160, 650, 110);#PB_Editor_ReadOnly
SetGadgetFont(2, FontID1)
ButtonGadget(Button_1, 650+25, 130, 100, 20, "Copy")
SetGadgetText(1, text$)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case Button_1
Stream.EDITSTREAM
Stream\dwCookie = 2
Stream\pfnCallback = @StreamOut()
SendMessage_(GadgetID(1), #EM_STREAMOUT, #SF_RTF, @Stream)
A$ = ReplaceString(A$, "\u264?", "^C")
A$ = ReplaceString(A$, "\u284?", "^G")
A$ = ReplaceString(A$, "\u292?", "^H")
A$ = ReplaceString(A$, "\u308?", "^J")
A$ = ReplaceString(A$, "\u348?", "^S")
A$ = ReplaceString(A$, "\u364?", "^U")
A$ = ReplaceString(A$, "\u265?", "^c")
A$ = ReplaceString(A$, "\u285?", "^g")
A$ = ReplaceString(A$, "\u293?", "^h")
A$ = ReplaceString(A$, "\u309?", "^j")
A$ = ReplaceString(A$, "\u349?", "^s")
A$ = ReplaceString(A$, "\u365?", "^u")
Debug A$
SetGadgetText(2, A$)
A$ = GetGadgetText(2)
Debug A$
EndSelect
EndSelect
ForEver
EndIf ; Open Window
End