ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Clipboard benutzen | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
26.11.2007, 23:49 Uhr MaikG Posts: 5172 Nutzer |
Ich hab noch nie das Clipboard benutzt. NDK hab ich gelesen. Muss ich nur das clipboard.device öffnen und ein CMD_Write reinschicken? Was ist mit der Unit, andere Programme benutzen es ja auch? Oder mit Shared öffnen? [ - Antworten - Zitieren - Direktlink - ] |
27.11.2007, 10:10 Uhr ZeroG Posts: 1487 Nutzer |
@MaikG: Auch schon in das RKM:Devices geguckt? Da ist ein ganzes Kapitel dem Clipboard zugedacht. Mit Beispielen. Was die Unit angeht, ist es eine gute Idee dem Benutzer eine Einstellmöglichkeit zu geben und als default 0 zu benutzen. [ - Antworten - Zitieren - Direktlink - ] |
27.11.2007, 15:10 Uhr MaikG Posts: 5172 Nutzer |
>Auch schon in das RKM:Devices geguckt? Hab die Developer CD 2.1 noch nicht finden können... >Was die Unit angeht, ist es eine gute Idee dem Benutzer eine >Einstellmöglichkeit zu geben und als default 0 zu benutzen. Also können alle Programme die Unit 0 öffnen ohne einen Fehler zurück zubekommen? [ - Antworten - Zitieren - Direktlink - ] |
27.11.2007, 15:32 Uhr thomas Posts: 7717 Nutzer |
@MaikG:Zitat: http://www.vesalia.de/d_developer2.htm Zitat: Natürlich immer nur eins zur Zeit. Sonst gäbe es Kuddelmuddel. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
27.11.2007, 15:32 Uhr ZeroG Posts: 1487 Nutzer |
@MaikG: Auch schon etwas her das ich mit dem Clipboard gespielt hab und im moment hab ich leider keine Zeit mein RKM rauszukrammen und nachzugucken. Normalerweise kann man ja z.B. in Multiview Text ausschneiden und dann praktisch überall einfügen. Das geht natürlich nur wenn die Programme die gleiche Unit benutzen, normalerweise ist das Unit 0, die anderen 255 Units sind für fortgeschrittene Benutzer gedacht. Alle Programme können Unit 0 benutzen, aber natürlich nur nacheinander, für die genauen Regeln mußt du wohl in dein RKM gucken. [ - Antworten - Zitieren - Direktlink - ] |
27.11.2007, 16:30 Uhr MaikG Posts: 5172 Nutzer |
>Natürlich immer nur eins zur Zeit. Sonst gäbe es Kuddelmuddel. Also muss ich öffnen - machen schliessen und beim nächsten zugriff das selbe? >Normalerweise kann man ja z.B. in Multiview Text ausschneiden und >dann praktisch überall einfügen. Das geht natürlich nur wenn die >Programme die gleiche Unit benutzen, normalerweise ist das Unit 0, >die anderen 255 Units sind für fortgeschrittene Benutzer gedacht. Ich brauche das gegenteil, ich schreibe was ins Clipboard und alle anderen sollten darauf zugreifen können. [ - Antworten - Zitieren - Direktlink - ] |
27.11.2007, 16:43 Uhr thomas Posts: 7717 Nutzer |
C code:BOOL write_clipboard (UBYTE *buffer,ULONG unit) { BOOL ok = FALSE; struct IFFHandle *iff; if (iff = AllocIFF()) { if (iff->iff_Stream = (ULONG) OpenClipboard (unit)) { InitIFFasClip (iff); if (!OpenIFF (iff, IFFF_WRITE)) { if (!PushChunk (iff, ID_FTXT, ID_FORM, IFFSIZE_UNKNOWN)) { if (!PushChunk (iff, 0, ID_CHRS, IFFSIZE_UNKNOWN)) { ULONG len = strlen (buffer); if (WriteChunkBytes (iff, buffer, len) == len) { if (!PopChunk (iff)) ok = TRUE; } } if (ok) if (PopChunk (iff)) ok = FALSE; } CloseIFF(iff); } CloseClipboard ((struct ClipboardHandle *)iff->iff_Stream); } FreeIFF (iff); } return (ok); } So oder so ähnlich soll man es machen. Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
27.11.2007, 18:15 Uhr MaikG Posts: 5172 Nutzer |
>So oder so ähnlich soll man es machen. Edit: Ah, achso jetzt hab ich es gesehen ich muss einen IFF-Header davor setzen. [ Dieser Beitrag wurde von MaikG am 27.11.2007 um 18:18 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
27.11.2007, 19:58 Uhr Der_Wanderer Posts: 1229 Nutzer |
@tomas Interessant. Hast du auch noch das "read_Clipboard" Äquivalent ? -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
27.11.2007, 20:26 Uhr thomas Posts: 7717 Nutzer |
C code:struct List *read_clipboard (ULONG unit) { struct List *list = NULL; struct Node *node; struct IFFHandle *iff; struct ContextNode *cn; long err; BOOL ok = FALSE; if (iff = AllocIFF()) { if (iff->iff_Stream = (ULONG) OpenClipboard (unit)) { InitIFFasClip (iff); if (!OpenIFF (iff, IFFF_READ)) { if (!StopChunk (iff, ID_FTXT, ID_CHRS)) { if (list = AllocVec (sizeof (struct List),MEMF_CLEAR)) { NewList (list); ok = TRUE; do { err = ParseIFF (iff,IFFPARSE_SCAN); if (err == IFFERR_EOC) continue; if (err == IFFERR_EOF) break; ok = FALSE; if (err != 0) break; cn = CurrentChunk(iff); if ((cn) && (cn->cn_Type == ID_FTXT) && (cn->cn_ID == ID_CHRS)) { if (node = AllocVec (sizeof(struct Node) + cn->cn_Size + 1,MEMF_CLEAR)) { node->ln_Name = (char *)(node + 1); if (ReadChunkBytes (iff,node->ln_Name,cn->cn_Size) == cn->cn_Size) { AddTail (list,node); ok = TRUE; } else FreeVec (node); } } } while (ok); if (!ok) { while (node = RemHead (list)) FreeVec (node); FreeVec (list); list = NULL; } } } CloseIFF(iff); } CloseClipboard ((struct ClipboardHandle *)iff->iff_Stream); } FreeIFF (iff); } return (list); } Gruß Thomas -- Email: thomas-rapp@web.de Home: thomas-rapp.homepage.t-online.de/ [ - Antworten - Zitieren - Direktlink - ] |
27.11.2007, 20:29 Uhr Bjoern Posts: 1730 Nutzer |
thomas der Code-Guru [ - Antworten - Zitieren - Direktlink - ] |
27.11.2007, 20:36 Uhr Der_Wanderer Posts: 1229 Nutzer |
@thomas Danke! -- Thilo Köhler, Author von: HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, TK AB3 Includes und viele mehr... Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
27.11.2007, 23:49 Uhr MaikG Posts: 5172 Nutzer |
Ja, lag am Fehlenden IFF-Header. Ich berechne jetzt einfach die beiden Byte Angaben und setzte den Header dazu. Dann ab mit CMD_Write und alles geht. Einfacher als ich dachte. Danke! [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Clipboard benutzen | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |