bonjour,
Je réalise un programme en langage C qui utilise principalement l'outil xwindow.
Mon problème est que je n'arrive pas à ouvrir 2 canaux d'affichage .
voilà mon programme me permet de créer deux fenetres sur un poste distant.
j'aimerais donc créer une fenêtre sur un poste distant et une autre fenêtre sur mon poste .
Merci
Mon prog:
(il compile mais il ne s'éxecute pas!)
#include <stdlib.h>
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/keysym.h>
GC gc;
GC gc2;
Display *display;
//deuxieme canal d affichage
Display *display2;
int screen;
int screen2;
Window wina, winb, root, root2;
unsigned long white_pixel, black_pixel;
XSetWindowAttributes attrib;
unsigned long mask_attrib;
int largf,hautf;
Drawable fenetre;
int x,y,i;
unsigned int larg,haut;
//etablir connexion avec un autre ordi
//vbles pour la saisie au clavier
KeySym touche;
int nbre;
char frappe[20]; /*tampon pour la chaine nue*/
int tailtamp=20; /*taille du tampon*/
//initialisation:A CHANGER EN FONCTION DE LA MACHINE !!!
//NE PAS OUBLIER DE DePROTEGER L ECRAN QUI RECOIT PAR LA COMMANDE
//XHOST + ADR IP DE CELUI QUI ENVOIT
main() {
//ouverture d'un premier canal d'affichage
if ((display = XOpenDisplay ("194.214.13.223:0")) == NULL) {
fprintf (stderr, "Can't open Display\n");
fprintf("%s",display);
exit (1);
}
//ouverture d'un second canal d'affichage
if ((display2 = XOpenDisplay ("194.214.13.227:0")) == NULL) {
fprintf (stderr, "Can't open Display\n");
fprintf("%s",display);
exit (1);
}
x=100;y=250;
larg=40;
haut=40;
largf=300;
hautf=300;
gc = DefaultGC (display, screen);
//deuxieme contexte graphique
gc2= XCreateGC(display2,winb,0,0);
screen = DefaultScreen (display);
screen2= DefaultScreen (display2);
root = RootWindow (display, screen);
root2 = RootWindow(display2, screen2);
white_pixel = WhitePixel (display, screen);
black_pixel = BlackPixel (display, screen);
wina = XCreateSimpleWindow (display, root, 0, 0, largf, hautf, 5, black_pixel, white_pixel);
XSelectInput (display, wina, ExposureMask | KeyPressMask );
XStoreName (display, wina, "PING PONG A");
XMapWindow (display, wina);
winb = XCreateSimpleWindow (display2, root2, 0, 0, largf, hautf, 5, black_pixel, white_pixel);
XSelectInput (display2, winb, ExposureMask | KeyPressMask);
XStoreName (display2, winb, "PING PONG B");
XMapWindow (display2, winb);
attrib.bit_gravity = SouthWestGravity;
mask_attrib = CWBitGravity;
XChangeWindowAttributes(display, wina, mask_attrib, &attrib);
attrib.bit_gravity = SouthWestGravity;
XChangeWindowAttributes(display2, winb, mask_attrib, &attrib);
for (;;)
{
int j,p;
XEvent ev;
XNextEvent (display, &ev);
XNextEvent (display2,&ev);
switch (ev.type)
{
case KeyPress:
nbre= XLookupString(&ev,frappe,tailtamp, &touche,0);
if (touche == XK_space)
{
//boucle permettant le deplacement de la balle dans la fenetre b
for (i=0;i<largf;i++){
y=largf-i;
XClearWindow (display2, winb);
XFillArc(display2,winb,gc2,i,y,larg,haut,0,360*64);
//pour ralentir la vitesse de la boucle
for (p=0;p<999999;p++);
}
//boucle permettant le deplacement de la balle dans la fenetre a
for (i=0;i<largf;i++)
{
XClearWindow (display, wina);
XFillArc(display,wina,gc,i,i,larg,haut,0,360*64);
//pour ralentir la vitesse de la boucle
for (j=0;j<999999;j++);
}
}
//else exit(0);
break;
}
}
}