lol, bon je suis désolé : à vouloir écrire un code trop réduit je me rends compte que ça a conduit à ne plus devenir vraiment compréhensible.
Le petit programme posté ci-dessus sert juste si on en fait un copier/coller et qu'on l'exécute à mettre en évidence le bug auquel je suis confronté dans mon programme qui gère un requester.
Je reprends mes explications en essayant d'être plus clair :
Donc à la place de la fonction Print(), mon programme appelle une fonction Requester() qui fait plein de choses dans la boucle avant de faire un app.display(), mais je me suis rendu compte que quoi qu'il y ait avant l'appel de cette fonction, la crash ne se produit (visiblement) que par rapport à l'appel de la fonction sf::Window::display () avec la conjonction du clic gauche de la souris... ce qui est plutôt embêtant justement pour une gestion de requester.
La fonction Requester est en cours de développement ; je te mets ci-dessous juste le code de la boucle qui se limite en fait à afficher pour l'instant le (ou les) boutton(s) du requester ainsi que le texte qui doit y être affiché... la couleur des boutons étant différente selon que le pointeur de la souris soit ou non situé au-dessus.
int Requester (string _Text$, string _Answer1$, string _Answer2$, float _X, float _Y, float _W, float _H)
{
.
.
.
do // Mouse management loop
{
MP=Mouse::getPosition(app);
GetMouseButtons(); // Set MB1 / MB2 from Mouse buttons Left / Right status (0=OFF / 1= ON)
_BFocus=0;
if (_B1.contains(MP)) {_Button1_Rect.setFillColor(Color(0xA0,0xA0,0xE0,0xFF)); _BFocus=1;}
else _Button1_Rect.setFillColor(Color(0x90,0x90,0xD0,0xFF));
// Display //
app.draw(_Req_Rect); app.draw(_Button1_Rect);
_TText.setPosition(_T1X, _Y+_H*.20); app.draw(_TText); // Requesters's message
_TAnswer1.setColor(Color(0xFF,0xFF,0xFF)); // Create text's relief effect
_TAnswer1.setPosition(_Button[1].X1+_Butt_W/2-_TAnswer1.getLocalBounds().width/2,_Button[1].Y1+_Butt_H/2-_TAnswer1.getCharacterSize()/2-1); app.draw(_TAnswer1);
_TAnswer1.setColor(Color(0x00,0x00,0x00));
_TAnswer1.setPosition(_Button[1].X1+_Butt_W/2-_TAnswer1.getLocalBounds().width/2-1,_Button[1].Y1+_Butt_H/2-_TAnswer1.getCharacterSize()/2-2); app.draw(_TAnswer1);
if (_N_Butt==2) // If the function was called to manage 2 buttons...
{
if (_B2.contains(MP)) {_Button2_Rect.setFillColor(Color(0xA0,0xA0,0xE0,0xFF)); _BFocus=2;}
else _Button2_Rect.setFillColor(Color(0x90,0x90,0xD0,0xFF));
app.draw(_Button2_Rect);
_TAnswer2.setColor(Color(0xFF,0xFF,0xFF)); // Create text's relief effect
_TAnswer2.setPosition(_Button[2].X1+_Butt_W/2-_TAnswer2.getLocalBounds().width/2,_Button[2].Y1+_Butt_H/2-_TAnswer2.getCharacterSize()/2-1); app.draw(_TAnswer2);
_TAnswer2.setColor(Color(0x00,0x00,0x00));
_TAnswer2.setPosition(_Button[2].X1+_Butt_W/2-_TAnswer2.getLocalBounds().width/2-1,_Button[2].Y1+_Butt_H/2-_TAnswer2.getCharacterSize()/2-2); app.draw(_TAnswer2);
}
if ((MB1) && (!_BFocus)) _MB_Release=1;
if ((MB1) && (!_MB_Release)) _MB_Selected=_BFocus;
if (MB2) _Quit=1;
app.display ();
} while (!_Quit);
return _Button_Selected;
}
Donc comme tu pourras facilement le voir, à part l'affichage de rectangles et de textes, il n'y a pas grand chose. La question est pourquoi le clic gauche cause un crash dans cette boucle ?
Bien évidemment à cause du problème rencontré je n'ai pas encore pu gérer les bouttons sélectionnés par un clic...
Remarque importante : le bug persiste même si on n'appelle aucune fonction de lecture de la souris (position ou état des bouttons)
Forte intuition : N'existe t'il pas un rapport avec le fait que le bouton gauche de la souris soit géré par ailleurs par le système (pour déplacer la fenêtre en cliquant sur sa barre de titre ou sur les icônes réduire, agrandir et fermer) ?
Bonne soirée,
Merci