Inglobare in un programma Gambas la finestra di un altro programma Gambas mediante le funzioni del API di X11

Da Gambas-it.org - Wikipedia.

Per inglobare la finestra di unprogramma Gambas all'interno della finestra principale di un altro programma Gambas, si può utilizzare la funzione XReparentWindow() della libreria dinamica condivisa: "libX11.so.6.3.0".

Va precisto che il Form, che si intende inglobare, non deve possedere bordi. Pertanto la proprietà .Border del Form va posta a False.

Tale funzione esterna richiede, fra l'altro, la specificazione del numero identificativo della finestra del programma da inglobare.


Mostriamo un esempio essenziale, nel quale il codice del programma, di cui si intende far inglobare il Form, è il seguente:

Public Sub Form_Open()
 
 Me.Border = False
 
 Print Me.Id
  
End


Il codice del programma Gambas che effettua nel proprio Form l'inglobamento del Form del precedente programma Gambas, è questo:

Library "libX11:6.3.0"

' Display *XOpenDisplay(char *display_name)
' Opens a connection to the X server that controls a display.
Private Extern XOpenDisplay(display_name As String) As Pointer

' int XReparentWindow(Display *display, Window w, Window parent, int x, int y)
' Removes a window from its current position in the hierarchy, and inserts it as the child of the specified parent.
Private Extern XReparentWindow(display As Pointer, w As Long, parent As Long, x As Integer, y As Integer) As Integer

' int XCloseDisplay(Display *display)
' Closes the connection to the X server for the display specified in the Display structure and destroys all windows.
Private Extern XCloseDisplay(display As Pointer) As Integer


Public Sub Button1_Click()

 Dim disp As Pointer

' Connessione al server X ed impostazione di default:
  disp = XOpenDisplay(Null)

' Ingloba nel Form principale del programma Gambas la finestra dell'altro programma Gambas identificata dal suo Id :
  XReparentWindow(disp, numero_Id_Form_da_inglobare, Me.Id, 10, 10)

' Chiude la libreria:
  XCloseDisplay(disp)

End



Riferimenti