Probleme beim Einbinden der Zwischenablage [gelöst]

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

d-bug

Betreff: Probleme beim Einbinden der Zwischenablage [gelöst]

BeitragDo, Jan 27, 2005 22:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Moinsen,

hab mal ein Bisserl mal versucht die API Zwischenablage einzubinden. Bei BB3D gings ja noch, aber bei BMax...

Code: [AUSKLAPPEN]


Extern "Win32"
  Function OpenClipboard:Int (hwnd:Int)
  Function CloseClipboard:Int ()
  Function IsClipboardFormatAvailable:Int (format:Int)
  Function EmptyClipboard:Int ()
  Function GetClipboardData:String (format:Int)
  Function SetClipboardData:Int (format:Int,str:String)
End Extern

Function WriteClipboard (istr:String)
 Local clipboard = 1
 If istr <> ""
  OpenClipboard 0
  EmptyClipboard ()
  SetClipboardData (clipboard,istr)
  CloseClipboard
 EndIf
End Function

Function ReadClipboard:String()
 Local clipboard = 1
 Local clip:String
 OpenClipboard 0
 If IsClipboardFormatAvailable (clipboard)
  clip = GetClipboardData (clipboard)
 EndIf
 CloseClipboard
 Return clip
End Function


Graphics 1024,768

txt:String = ""

Repeat
  Cls
  If KeyDown(Key_LControl) And KeyHit(Key_V) txt = ReadClipboard()
  DrawText txt,100,100
  Flip
  FlushMem
Until KeyHit(Key_Escape)
end


Es werden alle eingebundenen API-Funktionen gefunden. Soweit so gut. Sobald ich jetzt aber mit der Funktion ClipboardRead () die Zwischenablage auslesen will kommt eine lustige "Unhandled Memory Exception Error" Fehlermeldung und BMax bricht ab... Keinen Schimmer, woran das wohl liegen mag.

Wäre schön, wenn mir da mal jemand auf die Sprünge helfen könnte...
  • Zuletzt bearbeitet von d-bug am Fr, Jan 28, 2005 23:09, insgesamt einmal bearbeitet
 

morszeck

BeitragFr, Jan 28, 2005 13:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Funktion für VBasic geht ein wenig anders: http://www.activevb.de/tipps/v...p0520.html

Probiere sowiso immer den Code so zuschreiben dass es zu kein Problem führt:

Code: [AUSKLAPPEN]

Const CF_HDROP = 0

Function ReadClipboard:String()
 Local clipboard:Int = 1
 Local clip:String

 If IsClipboardFormatAvailable (CF_HDROP) then
   OpenClipboard (0)
   clip = GetClipboardData (CF_HDROP)
   CloseClipboard
   Return clip
 EndIf

 Return 0

End Function

d-bug

BeitragFr, Jan 28, 2005 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
@morszeck
Erst mal danke für Deine Antwort.

Im Prinzip machst du aber doch auch nichts anders als ich, oder ? Dein Code funktioniert aber auch nicht, bringt die gleiche Fehlermeldung und ist falsch, denn das Clipboard-Format für Text (CF_TEXT) muß 1 sein, und nicht 0... Denn 0 heißt wohl, das kein bekanntes Format im Clipboard ist, oder ?

greetz
 

morszeck

BeitragFr, Jan 28, 2005 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
frag mal im eng Forum nach...

d-bug

BeitragFr, Jan 28, 2005 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Juhuuuh, englisches Forum rulez !!! Very Happy

Das ist die Lösung :
Code: [AUSKLAPPEN]

Function ClipboardRead:String()
  Const CF_TEXT = 1
 
  Local clip:String
  Local cbd:Int
  If OpenClipboard(0)
    If IsClipboardFormatAvailable(CF_TEXT)
      cbd=GetClipBoardData(CF_TEXT)
      clip=clip.FromCString(Byte Ptr cbd)
    EndIf
    CloseClipboard
    Return clip
  EndIf
End Function


Fragt sich nur, wie JB auf das "FromCString"-Zeugs gekommen ist ?
Kann den Befehl in keinem Module finden, oder hab ihn einfach übersehen ?!

Vertex

BeitragFr, Jan 28, 2005 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Juhu, FromCString brauche ich gerade! Schade, das man in Types noch keine C-Strigns einbetten kann.
vertex.dreamfall.at | GitHub

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group