amiga-news 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:
Hab die Developer CD 2.1 noch nicht finden können...

http://www.vesalia.de/d_developer2.htm

Zitat:
Also können alle Programme die Unit 0 öffnen ohne einen Fehler
zurück zubekommen?


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.
.