Checkbox

cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010 - 30 mars 2010 à 09:02
cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010 - 2 avril 2010 à 09:46
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

cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
30 mars 2010 à 09:08
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
0
cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010
30 mars 2010 à 09:46
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
0
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
30 mars 2010 à 09:49
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
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
30 mars 2010 à 10:07
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010
30 mars 2010 à 10:41
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 !
0
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
30 mars 2010 à 11:10
IDC_AutoStart->CheckState ce n'est IDC_AutoStart.CheckState ?

@+
Arnotic,
Admin CS
0
cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010
30 mars 2010 à 11:38
j'ai deja essayer, se me met la même erreur
error C2228: la partie gauche de '.CheckState' doit avoir un class/struct/union
0
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
30 mars 2010 à 11:43
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
0
cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010
30 mars 2010 à 11:56
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é !
0
cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010
31 mars 2010 à 16:26
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);
0
cs_thejrem Messages postés 26 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 11 juin 2010
2 avril 2010 à 09:46
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);
}
0
Rejoignez-nous