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

Windows Forms Discussion :

probleme de l'api CheckDlgButton sous C#


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 22
    Points
    22
    Par défaut probleme de l'api CheckDlgButton sous C#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    [DllImport("user32", CharSet = CharSet.Auto)]
    public static extern int CheckDlgButton(IntPtr hwnd, int nIDButton, int wCheck);
    [DllImport("user32", CharSet = CharSet.Auto)]
    public static extern int GetDlgCtrlID(IntPtr hwnd);
     
    const int BST_CHECKED = 0x001;
    private void button1_Click(object sender, EventArgs e)
    {
    CheckDlgButton(this.Handle, Win32.GetDlgCtrlID(radioButton1.Handle), BST_CHECKED);
    }
    se code ne marche pas sous C# mais le meme en vb marche tres bien y'a une idee
    NB : this = form

  2. #2
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Bonjour,

    Pourquoi as tu besoin de cette API? alors que tu as la propriété checked du radiobutton pour l'activer ou non ???

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    car il est sur une application externe

  4. #4
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par aymane_farissi
    car il est sur une application externe
    Dans ce cas pourquoi fais tu ça ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void button1_Click(object sender, EventArgs e)
    {
    CheckDlgButton(this.Handle, Win32.GetDlgCtrlID(radioButton1.Handle), BST_CHECKED);
    }
    Le Handle doit être celui de la fen^tre de l'application externe, là tu passe le handle de "ta" fenêtre (this.Handle)

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    lol
    je sais c juste pour tester mon ami

  6. #6
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par aymane_farissi
    lol
    je sais c juste pour tester mon ami

    D'accord, il n'y a plus qu'à trouver pourquoi ça ne marche pas

  7. #7
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Essaye de valider le retour de l'appel de Win32.GetDlgCtrlID(radioButton1.Handle)

    Il doit être différent de zero.

    Ci ce n'est pas le cas modifie sa déclaration

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [DllImport("user32", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern int GetDlgCtrlID(IntPtr hwnd);
    Le numéro de l'erreur se trouvera alors dans Marshal.GetLastError()

  8. #8
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    ok merci si j'arrive a resoudre le probleme je vais le poster

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    pr le resultat du l'api Win32.GetDlgCtrlID(radioButton1.Handle) est different de Zero

    et resultat su System.Runtime.InteropServices.Marshal.GetLastWin32Error();
    sa donne Zero

    mais encore sa marche pas c bizzare

  10. #10
    Membre à l'essai
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 22
    Points
    22
    Par défaut
    le probleme c que cette api ne fonctionne que avec les controles de type CreateDialo

    mais avec sendnessage c bien marche avec un numero de message 245 pr les deux cas true et false

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

Discussions similaires

  1. Probleme api Ign sous Opera
    Par vashvash dans le forum IGN API Géoportail
    Réponses: 2
    Dernier message: 06/08/2011, 16h57
  2. Probleme lenteur API java sous unix
    Par dimitris dans le forum Général Java
    Réponses: 6
    Dernier message: 17/02/2009, 15h15
  3. Problème de résolution de lien sous MDK
    Par viddak dans le forum Linux
    Réponses: 2
    Dernier message: 25/03/2004, 19h51
  4. Probleme de linkage avec DirectDraw7 sous BC++ 5.02
    Par bobtorn dans le forum DirectX
    Réponses: 3
    Dernier message: 07/10/2003, 20h14
  5. Problemes de compilation avec g++ sous linux
    Par Selimmel dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 19/09/2003, 13h43

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