Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Ntui : Windowid erhalten
#2
Das crashed weil der Stringbufer überschrieben wird mit dem Pointer auf den String.
Hätte AB3 richtiges Typechecking würde dir das sofort auffallen.

So wäre das richtig:

[ab3]If ntui_GetAttr{*engine,#TUIA_ID,&*stringP.b}
If *stringP Then engineID.s = Peek.s(*stringP)
EndIf[/ab3]

Das gibt dir aber die ID der engine.

Was du willst ist

[ab3]*mywin.tuiWindow = (.tuiWindow)ntui_GetObjectByID{*engine,"myFunkyWidnow"}

; oder, falls du wirklich nur nach einem Fenster suchst
; oder die instanceID brauchst (hier 1234, falls du mehrere Fenster mit der gleichen ID erzeugst):

*mywin.tuiWindow = ntui_GetWindowByID{*engine,"myFunkyWindow",1234}[/ab3]

... und im XML

Code:
<window id="myFunkyWinodw">...</window>

Anmerkung:

Die Core Funktionen von NTUI benutzen nie BlitzBasic Strings, sondern ausschliesslich Pointer auf Null-terminierte Character Arrays.
Das ist zwar etwas umstaendlicher, aber kompatibel mit anderen Programmiersprachen wie C.
Fuer die BlitzBasic Anbindung gibt es einige Convenient Stubbs, wie z.B. ntui_GetStringByID. Das ist eigentlich keine NTUI Funktion sondern ein Stubb fuer ntui_GetAttrByID{...,#TUIA_STRING,...}.
Zitieren


Nachrichten in diesem Thema

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste