Checkbox

Signaler
Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
11 juin 2010
-
Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
11 juin 2010
-
bonjour j'aurai besoin d'aide pour ecrir une chekbox en langage C
il doit testé si le fichier existe dans le repertoir demmarrage pour savoir l'etat initiale puis,
si coché mettre un raccurcie dans demmarrage
si non coché suprimer ce racourcie
j'ai rajouter a ma boite de dialog la checkbox puis j'ai commencé a codé mais je trouve peu d'exemple en C

void CTestServeurSocketDlg::OnBnClickedAutostart()
      
{
if(IDC_AutoStart->CheckState)	
{
 CString exe ("C:\\Documents and Settings\\thejrem\\Mes documents\\Visual Studio 2008\\Projects\\TestServeurSocket\\Debug\\TestServeurSocket.exe");
 CString dir ("C:\\Documents and Settings\\thejrem\\Menu Démarrer\\Programmes\\Démarrage");
 CreateHardLink (exe, dir,0);
}
if(IDC_AutoStart->CheckState)
{
remove("C:\\Documents and Settings\\thejrem\\Menu Démarrer\\Programmes\\Démarrage\\TestServeurSocket.exe");
}
// TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle

}

11 réponses

Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Tu fais 2 fois le même test : if(IDC_AutoStart->CheckState)

Il faudrait :

if(!IDC_AutoStart->CheckState) // VAUT 0 DONC CHECKBOX NON COCHE
else // VAUT VAUT AUTRE QUE 0 DONC CHECKBOX COCHE

@+
Arnotic,
Admin CS
Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
11 juin 2010

merci donc maintenant mes if ressemble a
if(IDC_AutoStart==true)
ou
if(IDC_AutoStart==false)
sa compile mais lorsque j'apuis il ne rentre pas dans mes if car il lui faut une validation et j'aimerais qu'il ce mette a jour tous seul ! lors du click
tu a une iddée
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Je ne maitrise pas MFC.
Cependant ton test ne devrais pas ressembler à

if(IDC_AutoStart->CheckState == true) { /* COCHE */ }
else { /* NON COCHE */ }

Toi tu tests juste IDC_AutoStart. Qui ne veux rien dire.

@+
Arnotic,
Admin CS
Messages postés
793
Date d'inscription
mardi 8 juillet 2003
Statut
Membre
Dernière intervention
10 février 2021
8
Bonjour,
CheckState est du type BOOL donc ton test est vrai pour toutes valeurs différentes de 0.
Rappel FALSE 0 et TRUE 1. Mais pour le test c'est ppour toutes valeurs différentes de 0. Ce n'est un bool.



louis
Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
11 juin 2010

bas IDC_AutoStart c'est le nom de ma checkbox est s je met
if(IDC_AutoStart->CheckState ==true)

bas j'ai une erreur de la partie gauche de '->CheckState' doit pointer vers un type class/struct/union/générique
c'est mon probleme je ne voit pas ce qui faut rajouter dans le header sachant que la boite de dialogue ma rien ajouter dedans !
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
IDC_AutoStart->CheckState ce n'est IDC_AutoStart.CheckState ?

@+
Arnotic,
Admin CS
Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
11 juin 2010

j'ai deja essayer, se me met la même erreur
error C2228: la partie gauche de '.CheckState' doit avoir un class/struct/union
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
En recherche 1 min sur google, pour MFC j'ai trouvé ce genre de code :

int checkState;
CButton* pCheck = (CButton*)GetDlgItem(IDCB_CANVOTE);
checkState = pCheck->GetCheck();


@+
Arnotic,
Admin CS
Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
11 juin 2010

ma checkbox a ete ajouté via la boite a outils de visual studio 2008 mais CheckState n'est declaré nulle part !
que doit je ajouter au header pour le declaré !
Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
11 juin 2010

voici mon probleme est reglé !!
le seul probleme est que remove("C:\\Documents and Settings\\thejrem\\Menu Démarrer\\Programmes\\Démarrage\\ServeurSocket.exe");
ne marche pas quel qu'un peut me dire comment suprimer un fichier en langage C

void CTestServeurSocketDlg::OnBnClickedAutostart()
      
{
UpdateData(true);


if(CheckEtat)	
{
 
CString exe ("C:\\Documents and Settings\\thejrem\\Mes documents\\Visual Studio 2008\\Projects\\TestServeurSocket\\Debug\\TestServeurSocket.exe");
CString dir ("C:\\Documents and Settings\\thejrem\\Menu Démarrer\\Programmes\\Démarrage\\ServeurSocket.exe");
CreateHardLink (dir,exe,NULL);
}
else
{
remove("C:\\Documents and Settings\\thejrem\\Menu Démarrer\\Programmes\\Démarrage\\ServeurSocket.exe");
}
// TODO : ajoutez ici le code de votre gestionnaire de notification de contrôle
UpdateData(false);
Messages postés
26
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
11 juin 2010

alors merci de m'avoir aiguillé vers une solution mais j'aurai encor quelque question concernant ce qu'il y a dans ma checkbox
enfaite j'ai un probleme pour tster si le fichier existe et aussi pour suprimer le fichier lors du decochage
je rappel que je code en C et C++

void CTestServeurSocketDlg::OnBnClickedAutostart()
      
{	
FILE* tstart = fopen("C:\\Documents and Settings\\thejrem\\Menu Démarrer\\Programmes\\Démarrage\\ServeurSocket.exe","rt");
if (tstart == 0)
{CheckEtat=0;}
else
{
CheckEtat=1;
int close= fclose(tstart);
}
UpdateData(true);
if(CheckEtat)	
{
CString exe ("C:\\Documents and Settings\\thejrem\\Mes documents\\Visual Studio 2008\\Projects\\TestServeurSocket\\Debug\\TestServeurSocket.exe");
CString dir ("C:\\Documents and Settings\\thejrem\\Menu Démarrer\\Programmes\\Démarrage\\ServeurSocket.exe");
CreateHardLink (dir,exe,NULL);
}
else
{
unlink("C:\\Documents and Settings\\thejrem\\Menu Démarrer\\Programmes\\Démarrage\\ServeurSocket.exe");
}
UpdateData(false);
}