! Aide pour bouton radio (débutant)

Signaler
Messages postés
24
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
24 mars 2008
-
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
-
Salut à tous;
voilà je suis en train de m'initier aux différents controls
j'ai pompé un code sur les boutons radio, ça fonctionne;
mais je voudrais lui rajouter une tâche à faire:

Quand je selectionne l'un des boutons, j'aurais un double (2X la saisie)
de ce que je rentre.
Merci.

voici le code:

HWND hEdit; /* On aura besoin d'un handle pour
ne pas faire d'appels successifs
à GetDlgItem() */

int Select;
char buf[256]; /* Un buffer pour stocker le nom de
l'entrée à ajouter */
switch(message)
{
case WM_INITDIALOG:
// Initialisation de la boite de dialogue

/* Par défaut, un radio n'est pas sélectionné,
il faut donc lui donner une sélection par
défaut pour éviter qu'aucun choix ne soit
fait */
CheckDlgButton(Dlg,IDC_RADIO1,BST_CHECKED);

/* On récupère un HWND sur le controle auquel
on va envoyer les messages*/
hEdit=GetDlgItem(Dlg,IDC_COMBO);

case WM_COMMAND:
Select=LOWORD(wParam);
switch(Select)
{
case IDC_ADD: //bouton ajouter
/* On récupère un HWND sur le controle
auquel on va envoyer les messages */
hEdit=GetDlgItem(Dlg,IDC_COMBO);
// On récupère le nom à donner
GetDlgItemText(Dlg,IDC_EDIT,buf,32);

// Quel est le radio sélectionné ?
if(IsDlgButtonChecked(Dlg,IDC_RADIO1)){
strcat(buf," - Choix 1");
}
else{
strcat(buf," - Choix 2");
}
/* On récupère un HWND sur le controle
auquel on va envoyer les messages */
hEdit=GetDlgItem(Dlg,IDC_LIST);
// On ajoute l'entrée
SendMessage(hEdit,LB_ADDSTRING,NULL,(LPARAM)(LPCTSTR)buf);
return TRUE;

3 réponses

Messages postés
571
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
5 décembre 2013

J'ai pas trop compris ta question mais si tu cherche a detecter le click sur les radio pour executer une action
    case WM_COMMAND:{
            switch(HIWORD(wParam))
            {
                case BN_CLICKED:
                    {
HWND hwncontrol = (HWND)lParam;
IF hwncontrol == hwndradio {                            bool bChecked (SendMessage(hwncontrol, BM_GETCHECK, 0, 0) BST_CHECKED);
                            if (!bChecked) {
                               ......................
                            }
                            else {
                                ......................
                            }
}
Messages postés
24
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
24 mars 2008

Resalut, ta proposition pourrait marcher, mais en attendant de
de l'integrer dans mon code, je réexplique l'idée de ce que je voudrais faire:

je dispose d'un case de saisie destinée aux (entrées)
et une autre case destinée aux (résultats)
et entre les deux j'ai un bouton (exécution).

j'ai aussi deux boutons radio destinés à:

-si je clicke sur l'un d'eux, j'aurais (par exemple) le carré de l'entrée.
-si je clicke sur l'autre j'aurais le sinus de l'entrée.
et ceci dans la case des résultats

Question: comment dois-je m'y prendre?
NB mes acquis:
-je sais faire la fenêtre
-je sais faire les boutons
-je sais faire les case de saisie (controlEdit)
-je sais faire les fonctions (carrée, log, sinus...)

!Je bloque aux niveaux des manipulations des messages.
Merci
Messages postés
966
Date d'inscription
samedi 3 avril 2004
Statut
Membre
Dernière intervention
4 mars 2010
4
Quand tu cliques sur ton bouton execution, envoie un message pour savoir quel contrôle est sélectionné:
if(SendMessage(hWndButtonSinus,BM_GETCHECK,0,0)==BST_CKECKED) ...
if(SendMessage(hWndButtonSquare,BM_GETCHECK,0,0)==BST_CHECKED) ...