Les fenêtres ouvertes par CImg doivent être affichées à l'intérieur d'une boucle d'événements. La boucle d'événement dans l'extrait de code ci-dessus est le bloc dans l'instruction while.
while (!main_disp.is_closed())
main_disp.wait();
Le code dans le poste dessine la fenêtre dans le cadre du constructeur, le code entre dans la boucle d'événements et appels attente(). L'appel à wait() met l'application en pause jusqu'à ce qu'un "événement" se produise. L'événement est une sorte d'entrée. Il peut s'agir d'un clic de souris, d'un mouvement de la souris, d'une frappe sur le clavier ou même d'une requête de rafraîchissement du système d'exploitation. Lorsqu'un événement est reçu, l'application recommence à s'exécuter.
Je n'ai pas eu le temps d'essayer le code, mais ce code devrait afficher deux fenêtres en même temps:
cimg_library::CImg<unsigned char> image1(f1.c_str());
cimg_library::CImgDisplay disp1(image1, f1.c_str() );
cimg_library::CImg<unsigned char> image2(f2.c_str());
cimg_library::CImgDisplay disp2(image1, f2.c_str() );
//start event loop
while(true) {
//All the interactive code is inside the event loop
cimg_library::CImgDisplay::wait(disp1, disp2);
}
Le tutoriel (http://cimg.eu/reference/group__cimg__tutorial.html) a un exemple de deux fenêtres ouvertes et spectacles comment vérifier des choses comme des clics de souris et la position de la souris.
Lorsque j'avais fait l'erreur d'utiliser CImg, je n'ai pas résolu ce problème pour X et Windows. Ma solution était de laisser tomber CImg et aller à wxWidgets. C'était une bonne décision. – thiton