[MFC] Initialisation des radio dans une boite de dialogue

Initialisation des radio dans une boite de dialogue [MFC] - C++ - Programmation

Marsh Posté le 22-04-2004 à 17:54:19    

Voila pour mon prog de simulation numerique, j'utilise les Mfc pour faire toutes les fenetres et je programme sous visual.NET. J'ai besoin d'ouvrir une boite de dialogue ou l'utilisateur choisit entre deux possibilité concernant l'affichage des resultat. J'ai donc deux radio et suivant lequel est appuyé j'incremente une variable int with_etapes.
 
int with_etapes=0 si le premier radio (radio1) est clique
int with_etapes=1 si (radio2) est cliqué
 
Jusque la tout va bien, le seul truc c'est que je ne trouve pas comment, à l'ouverture de ma boite de dialogue, afficher, suivant la valeur de with_etapes, que radio1 ou radio2 est cliqué (que il y ai du vert dedans comme s'il avait ete cliqué quoi!). Pour les autres trucs genre les check je sais faire car on peut leur associer une classe qui a un attribut definissant s'il est cliqué ou pas, mais pour les radio les variables que l'on peut leur affecté ne sont que des int ou float ou derivé.
 
 
Help please!  :hello:


Message édité par Ltchris le 22-04-2004 à 18:10:18
Reply

Marsh Posté le 22-04-2004 à 17:54:19   

Reply

Marsh Posté le 23-04-2004 à 02:30:29    

up!
 
Siouplait  :jap:


Message édité par Ltchris le 23-04-2004 à 02:31:32
Reply

Marsh Posté le 23-04-2004 à 14:57:04    

je pense que que tu as du déclarer une variable m_radio de type value, CString pour recupérer la positions des boutons radio, il faudrait declarer aussi des variable de type contrôle m_ctrl_radio qui contiennent des méthodes du type m_ctrl_radio.setStyle(__,__);
désolé de ne pas être plus précis mais je suis pas sur mon pc de dev et je suis encore très très loin de connaitre les MFC par coeur, j'essayerais d'éditer ce message pour donner carrément un exemple de code initialisant les boutons radios


---------------
even if you win the rat's race............you're still a rat
Reply

Marsh Posté le 23-04-2004 à 16:02:05    

et ben le probleme c'est justement que contrairement a tout lesautres boutons on ne peutpas lui associer de variable de type value ou controle. Dans ma boite de dialogue quand j'essaye de créer une variable sur les radio il veut pas, je ne peut en creer que pour les edit et autre boutons qui se trouve a cote!
 
Essaye tu verra! enfin merci de ton aide quand meme :jap:


Message édité par Ltchris le 23-04-2004 à 16:04:13
Reply

Marsh Posté le 23-04-2004 à 16:36:49    

Ltchris a écrit :

et ben le probleme c'est justement que contrairement a tout lesautres boutons on ne peutpas lui associer de variable de type value ou controle. Dans ma boite de dialogue quand j'essaye de créer une variable sur les radio il veut pas, je ne peut en creer que pour les edit et autre boutons qui se trouve a cote!
 
Essaye tu verra! enfin merci de ton aide quand meme :jap:


Dans ce cas tarvaille en SDK standard avec GetDlgItem pour récupérer le handle de la fenetre de ton controle, et après utilise le message BM_SETCHECK
 
si ta radio a comme ID IDC_CHK1 :

Code :
  1. SendMessage(      GetDlgItem( this->m_hWnd, MAKEINTRESOURCE(IDC_CHK1)),      BM_SETCHECK, fChecked ? BST_CHECKED : BST_UNCHECKED, 0 );


 
Pour bien faire il faudrait aussi tester un peu les valeurs de retour, mais ce n'est pas le but de l'exemple ;)


Message édité par fli le 23-04-2004 à 16:39:47
Reply

Marsh Posté le 23-04-2004 à 17:09:19    

euh? je comprend pas trop ce que tu fait avecle Dlg item
Et pi y'a un probleme sendmessage ne prend que 3 parametre.
fchecked c'est ce qui va me definir si je veux mon radio allume ou pas, comprend pas tres bien? :??:


Message édité par Ltchris le 23-04-2004 à 17:10:35
Reply

Marsh Posté le 27-04-2004 à 01:26:04    

up!
 
resiouplait :jap:

Reply

Marsh Posté le 29-04-2004 à 18:10:58    

pour ceux que ca interesse:
 
en fait il suffit de faire  
 
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);  
 
surement ce que me disait fli mais en moins complique  
:jap:

Reply

Marsh Posté le 29-04-2004 à 22:31:58    

OnInitialUpdate() est ton ami... il te permet de redéfinir le comportement de la fonction appelée par défaut lors de l'ouverture d'une boite de dialogue, tu peux alors avec la méthode de ton choix activer ou pas les radios selon les valeurs des variables membres associées...
 
Sinon si tu veux gérer autrement les radios qu'en récupérant un pointeur sur eux depuis leurs ID du ressource manager, tu peux tout bêtement les créer "à la main", l'avantage est d'avoir un attribut associé au contrôle et de béneficier de méthodes déja existantes...
 
- Utilise une variable CButton,
- Dans le OnInitialUpdate(), appelle la méthode Create de CButton avec le flag BS_RADIOBUTTON positionné dans les styles,
-Pense à gérer les messages styles WM_SIZE (et donc overrider les fonctions associées OnSize...) pour positionner ton contrôle à la main...


---------------
- Pierre Baudelet -
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed