amiga-news DEUTSCHE VERSION
.
Links| Forums| Comments| Report news
.
Chat| Polls| Newsticker| Archive
.

amiga-news.de Forum > Programmierung > Clipboard benutzen [ - Search - New posts - Register - Login - ]

-1- [ - Post reply - ]

2007-11-26, 23:49 h

MaikG
Posts: 5172
User
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?

[ - Answer - Quote - Direct link - ]

2007-11-27, 10:10 h

ZeroG
Posts: 1488
User
@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.

[ - Answer - Quote - Direct link - ]

2007-11-27, 15:10 h

MaikG
Posts: 5172
User
>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?

[ - Answer - Quote - Direct link - ]

2007-11-27, 15:32 h

thomas
Posts: 7721
User
@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/

[ - Answer - Quote - Direct link - ]

2007-11-27, 15:32 h

ZeroG
Posts: 1488
User
@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.

[ - Answer - Quote - Direct link - ]

2007-11-27, 16:30 h

MaikG
Posts: 5172
User
>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.

[ - Answer - Quote - Direct link - ]

2007-11-27, 16:43 h

thomas
Posts: 7721
User
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/

[ - Answer - Quote - Direct link - ]

2007-11-27, 18:15 h

MaikG
Posts: 5172
User
>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. ]

[ - Answer - Quote - Direct link - ]

2007-11-27, 19:58 h

Der_Wanderer
Posts: 1229
User
@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


[ - Answer - Quote - Direct link - ]

2007-11-27, 20:26 h

thomas
Posts: 7721
User
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/

[ - Answer - Quote - Direct link - ]

2007-11-27, 20:29 h

Bjoern
Posts: 1730
User
thomas der Code-Guru :)

[ - Answer - Quote - Direct link - ]

2007-11-27, 20:36 h

Der_Wanderer
Posts: 1229
User
@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


[ - Answer - Quote - Direct link - ]

2007-11-27, 23:49 h

MaikG
Posts: 5172
User
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!

[ - Answer - Quote - Direct link - ]


-1- [ - Post reply - ]


amiga-news.de Forum > Programmierung > Clipboard benutzen [ - Search - New posts - Register - Login - ]


.
Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2025 by amiga-news.de - all rights reserved.
.