[Linux] API unter Linux

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
strgalt
Beiträge: 63
Registriert: 30.08.2004 23:25

[Linux] API unter Linux

Beitrag von strgalt »

Nabend zusammen,

ich hab noch nie unter Linux programmiert. Da ich aber vielleicht einige meiner Projekte versuchen möchte auf Linux zu portieren, wollt ich mal fragen wie das mit den GTK- APIs geht, genau so wie unter Windows?

Und dann ist mir aufgefallen, dass die SetWindowCallBack() - Funktion nur für Windows ist - wie fängt man denn unter PB- Linux Messages ab?

MfG
strgalt
Wer lesen kann, ist klar im Vorteil

MfG
strgalt
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Also da du hier allgemein nach APIs für Linux fragst kann ich dir auch
nochmal die Dokumentation zu der LibC ans Herz legen, da in dieser
Lib sehr viele Befehle deklariert sind, die einem sehr weiter helfen:
http://www.gnu.org/software/libc/manual/
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Sehr viele Info's findest Du auch hier: http://lidn.sourceforge.net/
Ist sowas wie MSDN, bloß für Linux :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
strgalt
Beiträge: 63
Registriert: 30.08.2004 23:25

Beitrag von strgalt »

hi,

danke für die schnelle Antwort und den Links.

Wollte aber wegen dem Abfangen von Messages mit PB unter Linux nochmal nachhaken. Wie geht das denn, wenn die SetWindowCallback nur für Windows ist?
Wer lesen kann, ist klar im Vorteil

MfG
strgalt
strgalt
Beiträge: 63
Registriert: 30.08.2004 23:25

Beitrag von strgalt »

hmm, ich seh schon...

also wie iich das sehe, sind so eher "allgemeine" sachen wie meinetwegen mathematische Funktionen mit der Lib zu behandeln und Funktionen zu den Steuerelementen über´s GTK? <-- sorry für die Frge aber Linux is noch Glatteis :)

Also zum beispiel nehmen wir das TreeGadget: Hier fehlen in PB leider elementare Events wie der Rechtsclick auf eine Node. Mit PB unter Windows kein Problem: WindowProc - MSG abfragen .... - leichte Sache.
Aber wie geht sowas nu unter PB- Linux vor sich?
Wer lesen kann, ist klar im Vorteil

MfG
strgalt
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag von MARTIN »

Wenn man ein Event-Abfragen will das von PB nicht zu Verfügung gestellt wird, von GTK aber schon, kann man es bewerkstelligen:

Code: Alles auswählen

;
; ------------------------------------------------------------
;
;   PureBasic - Window example file
;
;    (c) 2001 - Fantaisie Software
;
; ------------------------------------------------------------
;

Procedure bu_cb( *widget.GtkWidget ,ggfdatenpointerhier.l)
	PrintN("tree-select-row  signal")
EndProcedure


If OpenWindow(0, 100, 100, 395, 260, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget, "PureBasic Window")
  
  CreateGadgetList(WindowID()) 
  bu.l=ButtonGadget(2,320,10,50,25,"tesd");
  tg.l=TreeGadget(1, 10 ,10, 300, 200 ) 
  CloseGadgetList() 
  AddGadgetItem(1, 1,"Item 1")
   AddGadgetItem(1, 1,"Item 2")
   OpenTreeGadgetNode(1)
          AddGadgetItem(1, -1, "Sub-Item 1")
          AddGadgetItem(1, -1, "Sub-Item 2")
          AddGadgetItem(1, -1, "Sub-Item 3")
          AddGadgetItem(1, -1, "Sub-Item 4")
   CloseTreeGadgetNode(1)
  
        
  ;tree-select-row" signal mit der Funktion bu_cb verbinden
  ;Dieses Signal wird gesendet wenn eine Zeile gewählt wird, Standartmässig durch einen Rechtsclick
  ;Rechtsclick auf eine Node bewirkt das gleiche.
  gtk_signal_connect_(tg, "tree-select-row",@bu_cb(),ggfdatenpointerhier.l);
  
  Repeat
    EventID.l = WaitWindowEvent()
    
    If EventID = #PB_EventCloseWindow  ; If the user has pressed on the close button
      Quit = 1
    EndIf

  Until Quit = 1
  
EndIf

End   ; All the opened windows are closed automatically by PureBasic
So werden in GTK Events mit Funktionen verknüpft, und es funktioniert auch in PB.
Verschidenen Gadgets können auf verschidene Events reagieren.
Leider ist GTK nicht so ganz einfach wie PB, kann nicht erwarten das man sich in 3-Tagen in GTK einarbeiten kann.
Die beste Adress was die GTK-Fragen angeht ist wohl (was sonst):
http://www.gtk.org
Schau unter API Reference. Da gibt es auch einen Tutorial.
Man muss aber oft wo anders suchen um herauszufinden wie etwas Programmiert wird. Eine zentrale Anlaufstelle für die Linux-Programmierung Fragen (ähnlich der MSDN für Windows) gibt es nicht.
Die besagte LiDN ist eines der vielen Projekte, und kann (zuzeit ?) mit MSDN keinesfalls gleichgesetzt werden.

Erwähnenswert ist sicher glib(und glib2) mit vielen nutzlichen Funktionen:
http://developer.gnome.org/doc/API/glib/
z.B leicht verwendbare Timer.

Also viel Spass mit Linux-Programmierung.
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
strgalt
Beiträge: 63
Registriert: 30.08.2004 23:25

Beitrag von strgalt »

danke für deine ausführliche Antwort.

Erstmal vielen Dank für die Mühe die du dir gemacht hast :allright:

Die Sache sieht ja ganz iteressant aus. Die Art Steuerelemente und Event so zu verknüpfen erscheint mir gar nicht so schlecht. PB hat nun mal in diese Richtung viele Mankos, und da erscheint mir diese Variante der Verknüpfung von Steuerelement und Event fast übersichtlicher als mit der WindowProc.

Hab mir heute nacht noch einen kleinen Überblick über GTK verschafft, und ich bin guter Dinge, dass die Portierung einigermaße glimflich und vollständig sein wird.
Wer lesen kann, ist klar im Vorteil

MfG
strgalt
Antworten