IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

focus en C


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 12
    Points : 11
    Points
    11
    Par défaut focus en C
    bonjour je rencontre un petit probleme pour mettre le focus dans un champ d'une boite de dialogue. j'explique mon probleme!

    j'ai un programme ecrit en C suite a une action menu j'ouvre une fenetre de dialogue dans laquel je voudrai metttre le focus dans le premier champ text, le probleme c que comme je suis en c et pas en c++ je ne peu pas utilise les objets et leur methode.

    je pense que le type de messages dois etre de la forme

    SendDlgItemMessage(hwnd, IDC_MEMELOGIN, BM_SETCHECK, BST_CHECKED, 0 );

    la cet exemple coche une checkbox, mais je ne voi pas trop comment appliquer la fonction setfocus via cette methode

    au secourrrss!!!!!!!!!!!

    allez @+ tout le monde

  2. #2
    Bob
    Bob est déconnecté
    Membre éclairé
    Avatar de Bob
    Inscrit en
    Mars 2002
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 115
    Points : 866
    Points
    866
    Par défaut focus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    case WM_INITDIALOG:
        HWND wnd;
        wnd=GetDlgItem(hWnd,IDC_MEMELOGIN);
        SetFocus(wnd);
        return 0;
    le message correspondant a cet exemple est WM_SETFOCUS. Tu peux aussi l'envoyer directement.
    Le message WM_INITDIALOG doit retourner 0.
    Bob, Rédacteur C/C++ & PHP
    http://bob.developpez.com/

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 12
    Points : 11
    Points
    11
    Par défaut precision??
    dis moi j'ai reussi ta methode marche bien mais y'a quand meme qqch qui me chagrine!

    l"importance reel du return 0;
    car si je retourne 1 cela ne marche, je presume que c normal, mais je n'arrive pas saisir la signification et repercution de ce return 0

    voila @llez a toute et merci du coup de main

    killpilot 8)

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 12
    Points : 11
    Points
    11
    Par défaut oki doc !
    bon ok ca roule!! merci du coup de main, il me plait bien se forum!! ca repond vite lol!!!

    bah vous me reverez surement paske dans les API je patoge un peu hihi allez byby.


    @+ killpilot

  5. #5
    Bob
    Bob est déconnecté
    Membre éclairé
    Avatar de Bob
    Inscrit en
    Mars 2002
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 115
    Points : 866
    Points
    866
    Par défaut retourner 0 ?
    Je fais une petite correction a ce qui a ete dit. La valeur 0 sert a indiquer qu'on refuse le focus a la fenetre par defaut. La valeur 1 laisse windows gerer le focus. Aucun rapport avec une erreur ou koi que ce soit.
    Bob, Rédacteur C/C++ & PHP
    http://bob.developpez.com/

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 12
    Points : 11
    Points
    11
    Par défaut ok c enregistrer
    bon ca roule pour le retour de zero, c donc pour ca que quand je faisai mon return 1; windows mettait le focus sur la fenetre et pas sur mon champ specifie dans mon setfocus().

    bon sinon j'ai un autre probleme de retour, je suis encore etudiant et je travaille pour la premiere fois sur du C graphique donc c pas evident lol.

    alors voila je vais essayer de poser mon probleme clairement.

    etape 1. j'apel une boite de dialogue pour une saisi de login
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DialogBox(NULL,MAKEINTRESOURCE(DLG_LOGIN),NULL,LoginDlg)
    etape 2.
    et mon probleme est la c que je fait une connection ftp a la sorti de cette boite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (!strcmp(szUserAdmin,"")) // demander l'user pot de masse
    	{
    	if (!DialogBoxNULL,MAKEINTRESOURCEDLG_LOGIN),NULL,LoginDlg))
    			return FALSE;
    	}
     
    if (admin == STATION)
    	{
    	IpToString(PolitiqueCourante.Station.Ip, tempo);
     
        	hConnect1 = InternetConnect ( hOpen, tempo ,PolitiqueCourante.Station.PortFtp, szUserAdmin,  szPassAdmin, INTERNET_SERVICE_FTP, 0 , 0) ;
    .........

    donc voila mais je n'arrive pas gerer mon cancel c a dire que meme si je tape cancel il fait quand meme la requete ftp. Donc je cherche faire un test qui me dirai si je suis sorti par cancel ou autrement.

    et mon cancel est gere de la sorte

    case IDCANCEL:
    EndDialog(hwnd,1);
    return 1;

    voila j'espere que j'ai donne assez d'elements. Je vous remerci de votre aide et @+

    Killpilot

  7. #7
    Bob
    Bob est déconnecté
    Membre éclairé
    Avatar de Bob
    Inscrit en
    Mars 2002
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 115
    Points : 866
    Points
    866
    Par défaut cancel
    Alors voila. La fonction EndDialog() que tu utilise pour terminer ta boite de dialogue prend 2 parametres. Le 2e, c celui qui commanhde la valeur retournee par la fonctione DialogBox().
    Donc pour savoir si tu retourne avec cancel ou ok tu fais 2 cas:
    Si c ok : EndDialog(hDlg,1); // On retourne 1
    Si c cancel : EndDialog(hDlg,0); // On retourne 0

    Et apres tu fais un test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!DialogBox(...,...,...,...))
        return FALSE; // Si c cancel, on vas pas plus loin
    // c ok, alors on continue
    Pour mieux comprendre lis les cours de formation pour apprendre le langage C : http://c.developpez.com/cours/
    Bob, Rédacteur C/C++ & PHP
    http://bob.developpez.com/

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 12
    Points : 11
    Points
    11
    Par défaut compris!
    bon c ok entre temps j'ai cru comprendre mais finalement j'ai carement fait un
    EndDialog(....,IDCANCEL)
    car j'ai pas mal d'autre choix qui retourner des 0 et des 1 ( ce n'est pas moi qui est commence le codage, je reprend le code de qq un en fait)donc pour etre sur que je sorte bien sur mon cancel j'ai fait ca!

    ce que j'ai vu d'ailleur sur un FAQ
    http://www.winprog.org/tutorial/dialogs.html

    voilà j'espere que cette methode est quand meme dans les regles paske sinon je vais me faire engueuler!

    Killpilot

  9. #9
    Bob
    Bob est déconnecté
    Membre éclairé
    Avatar de Bob
    Inscrit en
    Mars 2002
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 115
    Points : 866
    Points
    866
    Par défaut ok
    Pas de pb, ce type de code est tout a fait dans les regles. Retourner 1 ou 0 c juste une maniere plus simple si tu as juste OK ou CANCEL mais si tu as plus d'options, y fo faire comme tu fais.
    Bob, Rédacteur C/C++ & PHP
    http://bob.developpez.com/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ne jamais mettre le focus sur un tbutton, possible
    Par portu dans le forum Composants VCL
    Réponses: 4
    Dernier message: 03/07/2003, 15h06
  2. Rajout du focus
    Par Claythest dans le forum Composants VCL
    Réponses: 2
    Dernier message: 10/06/2003, 17h10
  3. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51
  4. Comment être sure que mon appli prenne le focus ?
    Par AmaX dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/12/2002, 15h00
  5. Créer une fenêtre flottante qui ne peut avoir le focus
    Par BestofMac dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo