Deutsch
Quelltexte/ Codesnippets

Richedit

 
OLE-Unterstützung für RichEdit-Controls

KompilierenMarkierenSeparieren
****************** Demo: OLE-Unterstützung für RichEdit-Controls
****************** XProfan² (Profan² 7.9)  Min: Win9x   Max:Win??
****************** © by TCS (Uwe "Pascal" Niemeier) 112003
window 50,10-650,570
usermessages 16,1066--WM_Close + Kontextmenü-Message von OLE-Interface
declare a%,b%,c%
declare a$,b$,c$
declare a&,b&,c&
declare a!,b!,c!
declare a#,b#,c#
declare Edit&,Test1&,Test2&,Test3&
 $H Messages.ph---Standart
 $H Windows.ph----Standart
 $I IRichEditOleCallback.inc---------IRichEditOleCallback-Interface
 $U OleUIInsertObject.pcu = RTF_-----"Objekt einfügen"-Dialog
Edit&=create("RichEdit",%hwnd,"",10,40,620,470)
setfocus(Edit&)
Init-OLE Edit&
Test1&=create("button",%hwnd,"Load",100,10,80,22)
Test2&=create("button",%hwnd,"Save",200,10,80,22)
Test3&=create("button",%hwnd,"Objekt einfügen",300,10,140,22)

while 1

    waitinput
    case %umessage=16:break

    if getfocus(Test1&)------------------------------------------------Öffnen

        a$=loadfile$("Bitte RTF-Datei wählen","*.rtf")
        case len(a$):RTF("LoadRTF",Edit&,a$)
        setfocus(%hwnd)

    elseif getfocus(Test2&)--------------------------------------------Speichern

        a$=savefile$("RTF-Datei speichern","*.rtf")
        case len(a$):RTF("SaveRTF",Edit&,a$)
        setfocus(%hwnd)

    elseif getfocus(Test3&)--------------------------------------------Einbinden

        RTF_Einfügen-OLE Edit&--aus Unit
        setfocus(%hwnd)

    elseif %umessage=1066--wird bei IRichEditOleCallback::GetContextMenu gesendet

        createmenu
        appendmenu 101,"Kopieren"
        appendmenu 102,"Ausschneiden"
        appendmenu 103,"Einfügen"
        appendmenu 104,"Objekt einfügen"
        trackmenu %mousex,%mousey
        case %menuitem=101:sendmessage(Edit&,~WM_COPY,0,0)
        case %menuitem=102:sendmessage(Edit&,~WM_CUT,0,0)
        case %menuitem=103:sendmessage(Edit&,~WM_PASTE,0,0)
        case %menuitem=104:RTF_Einfügen-OLE Edit&

    endif

endwhile

destroywindow(Edit&)
DeInit-OLE
end
 
16.08.2004  
 



Laden & Speichern von RTFs nach Andreas Miethe

KompilierenMarkierenSeparieren
SET("FastMode",1)
 $H windows.ph
 $H messages.ph
DEF &EM_STREAMIN  1097
DEF &EM_STREAMOUT 1098
DEF &SF_RTF  2
DEF &SF_TEXT 1
Struct EDITSTREAM =  dwCookie&,dwError&,pfnCallback&

Proc RTF_StreamIn_Callback

    Parameters hFile&,pbBuff&,cb&,pcb&
    Return XOR(~ReadFile(hFile&,pbBuff&,cb&,pcb&,0),1)

EndProc

Proc RTF_StreamOut_Callback

    Parameters hFile&,pbBuff&,cb&,pcb&
    Return XOR(~WriteFile(hFile&,pbBuff&,cb&,pcb&, 0),1)

EndProc

Proc RTF_StreamIn

    Parameters FileName$,RTFControl&,RTF_Flag&
    Declare StreamData#,FileID&
    FileID& = ~CreateFile(Addr(FileName$),~GENERIC_READ,~FILE_SHARE_READ,0,~OPEN_EXISTING,~FIL E_ATTRIBUTE_NORMAL,0)

    If FileID&

        Dim StreamData#,EDITSTREAM
        StreamData#.dwCookie& = FileID&
        StreamData#.dwError& = 0
        StreamData#.pfnCallback& = ProcAddr(RTF_StreamIn_Callback,4)
        SendMessage(RTFControl&,&EM_STREAMIN,RTF_Flag&, StreamData#)
        ~CloseHandle(FileID&)
        Dispose StreamData#

    Endif

EndProc

Proc RTF_StreamOut

    Parameters FileName$,RTFControl&,RTF_Flag&
    Declare StreamData#,FileID&
    FileID& = ~CreateFile(Addr(FileName$),~GENERIC_WRITE,~FILE_SHARE_WRITE,0,~CREATE_ALWAYS,~F ILE_ATTRIBUTE_NORMAL,0)

    If FileID&

        Dim StreamData#,EDITSTREAM
        StreamData#.dwCookie& = FileID&
        StreamData#.dwError& = 0
        StreamData#.pfnCallback& = ProcAddr(RTF_StreamOut_Callback,4)
        SendMessage(RTFControl&,&EM_STREAMOUT,RTF_Flag&,StreamData#)
        ~CloseHandle(FileID&)
        Dispose StreamData#

    Endif

EndProc

Declare Ende&,EndeButton&,GetButton&,SaveAsTextButton&,SaveAsRTFButton&,RTF&,File$
Cls ~GetSysColor(~COLOR_BTNFACE)
SetDialogFont ~GetStockObject(~DEFAULT_GUI_FONT)
EndeButton& = Create("Button",%hwnd,"Ende",10,2,80,24)
GetButton& = Create("Button",%hwnd,"Load",100,2,80,24)
SaveAsTextButton& = Create("Button",%hwnd,"Save as TXT",190,2,80,24)
SaveAsRTFButton& = Create("Button",%hwnd,"Save as RTF",280,2,80,24)
RTF& = Create("RichEdit",%hwnd,"",10,30,Width(%hwnd)-20,Height(%hwnd)-80)
UserMessages ~WM_COMMAND

WhileNot Ende&

    waitinput

    If %UMessage = ~WM_COMMAND

        If &ULparam = EndeButton&

            Ende& = 1

        ElseIf &ULparam = GetButton&

            File$ = LoadFile$("Datei laden :","Textdatei|*.TXT|Richtext|*.RTF")

            If File$ <> ""

                If Upper$(Right$(File$,4)) = ".RTF"

                    RTF_StreamIn(File$,RTF&,&SF_RTF)

                ElseIf Upper$(Right$(File$,4)) = ".TXT"

                    RTF_StreamIn(File$,RTF&,&SF_TEXT)

                Endif

            Endif

        ElseIf &ULparam = SaveAsTextButton&

            File$ = SaveFile$("Speichere als TXT","unbenannt.TXT")

            If File$ <> ""

                RTF_StreamOut(File$,RTF&,&SF_TEXT)

            Endif

        ElseIf &ULparam = SaveAsRTFButton&

            File$ = SaveFile$("Speichere als RTF","unbenannt.RTF")

            If File$ <> ""

                RTF_StreamOut(File$,RTF&,&SF_RTF)

            Endif

        Endif

    Endif

EndWhile

 
17.08.2004  
 



Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.233 Betrachtungen

Unbenanntvor 0 min.
Rockford01.08.2024
Uwe Starke17.11.2023
Michael Hettner30.08.2021
Alibre26.12.2019
Mehr...

Themeninformationen

Dieses Thema hat 1 Teilnehmer:

unbekannt (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie