AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C++ Fenster unter Linux (Funktionsweise)
Thema durchsuchen
Ansicht
Themen-Optionen

C++ Fenster unter Linux (Funktionsweise)

Ein Thema von SirThornberry · begonnen am 6. Jul 2007 · letzter Beitrag vom 6. Jul 2007
Antwort Antwort
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#1

C++ Fenster unter Linux (Funktionsweise)

  Alt 6. Jul 2007, 15:26
Hallo,

ich wüsste gern wie man unter Linux ein Fenster (was im X-Server zu sehen ist) erstellt. Und wie läuft das Handling? Ähnlich wie unter Windows mit Messages?
Weiß jemand wo ich dazu ein Tutorial oder ähnliches finden kann?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#2

Re: C++ Fenster unter Linux (Funktionsweise)

  Alt 6. Jul 2007, 15:38
Da gibts verschiedene Möglichkeiten. Man kann natürlich direkt auf den X-Server zugreifen. Besser gehts aber über vorgefertigte Bibliotheken wie QT oder GTK. Das hat den Vorteil, dass sie sich ganz einfach auf z.B. Windows portieren lassen.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: C++ Fenster unter Linux (Funktionsweise)

  Alt 6. Jul 2007, 15:41
ich möchte es ohne gtk etc. machen. Ich will sozusagen wissen was passiert und nichts fertiges nehmen. Also direkt auf den X-Server dann wohl zugreifen (sozusagen nonvcl für linux)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: C++ Fenster unter Linux (Funktionsweise)

  Alt 6. Jul 2007, 19:33
Nun.. Ich bin zwar auch nicht perfekt informiert über das Thema, aber so wie ich das sehe, hast du das Thema ein wenig falsch verstanden. Die Windows-API stellt dir ein Widget-Set bereit (eben die normalen Controls - Buttons, Statics, Editfenster usw), die du benutzt um deine Fenster darzustellen. Qt, GTK, Athena, ... sind ebenfalls Widget-Sets, die du für die Darstellung benutzt. Du müsstest also quasi alle deine Controls selbst zeichnen, alle Events selbst verarbeiten, der X-Server lediglich eine Zeichenfläche und eine Nachrichten-Schnittstelle bereitstellt.


Wenn das jetzt falsch ist, bitte korrigiert mich
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: C++ Fenster unter Linux (Funktionsweise)

  Alt 6. Jul 2007, 19:36
Genau, ein X-Server stellt nur Zugriffsmöglichkeiten auf Ein-/Ausgabe und Funktionen zum Zeichnen von graphischen Primitiven und Schrift zur Verfügung.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: C++ Fenster unter Linux (Funktionsweise)

  Alt 6. Jul 2007, 20:11
Zitat:
Genau, ein X-Server stellt nur Zugriffsmöglichkeiten auf Ein-/Ausgabe und Funktionen zum Zeichnen von graphischen Primitiven und Schrift zur Verfügung.
Nich nur.

Code:
The following program creates a window with a little black square in it.

 /*
   Simple Xlib application drawing a box in a window.
 */

 #include<X11/Xlib.h>
 #include<stdio.h>
 #include<stdlib.h>

 int main() {
   Display *d;
   int s;
   Window w;
   XEvent e;

                        /* open connection with the server */
   d=XOpenDisplay(NULL);
   if(d==NULL) {
     printf("Cannot open display\n");
     exit(1);
   }
   s=DefaultScreen(d);

                        /* create window */
   w=XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 100, 100, 1,
                         BlackPixel(d, s), WhitePixel(d, s));

                        /* select kind of events we are interested in */
   XSelectInput(d, w, ExposureMask | KeyPressMask);

                        /* map (show) the window */
   XMapWindow(d, w);

                        /* event loop */
   while(1) {
     XNextEvent(d, &e);
                        /* draw or redraw the window */
     if(e.type==Expose) {
       XFillRectangle(d, w, DefaultGC(d, s), 20, 20, 10, 10);
     }
                        /* exit on key press */
     if(e.type==KeyPress)
       break;
   }

                        /* close connection to server */
   XCloseDisplay(d);

   return 0;
 }
Xlib
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: C++ Fenster unter Linux (Funktionsweise)

  Alt 6. Jul 2007, 22:07
@Dax: Was wird denn zum Beispiel bei Lazarus verwendet wenn man da eine neue Formularanwendung erstellt?

@sniper_w: Genau so LoLevel-mäßiges hab ich gesucht. Werd mal schauen ob es nur auf den ersten Blick das richtige ist oder wirklich das was ich gesucht habe.

Etwas ist mir noch unklar.
Bei der KDE kann man ja zum Beispiel den optischen Style von Buttons in Anwendungen ändern (ähnlich den Windowsthemes). Wenn aber wirklich alle Anwendungen sich selbst um das Zeichnen kümmern wäre das ja nicht möglich. Es scheint also als würden die Anwendungen doch irgendwelche vorgerfertigten zeichenroutinen etc. haben so das der Button in jeder Anwendung gleich aussieht entsprechend dem gewählten Style.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#8

Re: C++ Fenster unter Linux (Funktionsweise)

  Alt 6. Jul 2007, 22:50
Zitat von SirThornberry:
@Dax: Was wird denn zum Beispiel bei Lazarus verwendet wenn man da eine neue Formularanwendung erstellt?
Was Lazarus verwendet, hängt von dir ab: ob GTK, GTK2, Qt, ... ist egal, Du hast die Macht

Zitat von SirThornberry:
Etwas ist mir noch unklar.
Bei der KDE kann man ja zum Beispiel den optischen Style von Buttons in Anwendungen ändern (ähnlich den Windowsthemes). Wenn aber wirklich alle Anwendungen sich selbst um das Zeichnen kümmern wäre das ja nicht möglich. Es scheint also als würden die Anwendungen doch irgendwelche vorgerfertigten zeichenroutinen etc. haben so das der Button in jeder Anwendung gleich aussieht entsprechend dem gewählten Style.
Das ist der Sinn von Toolkits. Du hast "Komponenten", ähnlich denen in Delphi, denen du nur sagst, was sie tun und worauf sie reagieren sollen. Dabei kümmert sich dann immer das Toolkit um das Zeichnen der Komponenten, nicht die Anwendung selbst - stell dir die Toolkits einfach als große Skin-Komponentensammlung vor.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz