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

MFC Discussion :

récupérer le titre d’une fenêtre


Sujet :

MFC

  1. #1
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut récupérer le titre d’une fenêtre
    Bonjour a tous,
    je suis aller sur la FAQ VC++ etMFC et mais je n'arrive pas intégrer dans mon code l'une de ces fonctions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CWnd::GetWindowText
    int GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) const;
    void GetWindowText( CString& rString ) const
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char sz[10];
    int nRet = pWnd->GetWindowText(sz, 10);
    quelqu'un pourait-il m'aider?

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    quel est le probleme ? ,l'erreur ?

  3. #3
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    l'erreur est la suivante:
    error C2447: missing function header (old-style formal list?)

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    tu es sur que l'erreur est sur ces deux lignes? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    char sz[10];
    int nRet = pWnd->GetWindowText(sz, 10);
    tu n'aurais pas plutot un probleme de declaration sur les arguments d'une fonction ?

  5. #5
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    Je pense que si désolé je n'est pas encore un très bon niveau.
    Es que tu pourrais m'écrire un morceau du code pour m'aiguiller

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573

  7. #7
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    désolé de la question mais peut tu etre un peut plus claire

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Comme on ne sais pas grand-chose sur le code qui a pu provoquer l'erreur, ou les en-têtes que tu as inclus, je pense que le problème vient du fait que tu compiles en unicode et en unicode, la fonction GetWindowText() ne prend pas un pointeur sur char, mais sur wchar_t.

    À moins que la source du problème soit ailleurs, tu as donc deux solutions:
    1. Compiler en Multi-Byte Character Set au lieu de Unicode Character Set.
    2. Remplacer ton tableau de char par un tableau de TCHAR, qui donne toujours le bon type : wchar_t en unicode ou en char multi-byte.

  9. #9
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    Bon je vous montre mon code mais soiyé indulgent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    #include <iostream>
    #include <windows.h>
     
    using namespace std;
     
    int main()
    {
    char sz[10];
    int nRet = pWnd->GetWindowText(sz, 10);
    }

  10. #10
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    bon je sais que mon code ne veux rien dire mais je ne sais pas comment m'y prendre pour utitliser ces deux fonctions.....

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Euh... Tu n'utilises donc pas les MFC ?

    C'est le titre de quelle fenêtre que tu cherches à récupérer ? Celui de la fenêtre console?

  12. #12
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    Pour les MFC je ne sais pas comment les déclarer et pourtant je pense que c'est le plus simple faire ( ).
    Ce ci pour récupérer le titre d'une fenetre d'application ( et non celui de la fenêtre console)

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Y'a pas de fenêtre d'application dans ton code...

  14. #14
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    J'ai beau déclaré les handle dans la fonction lit_titre rien n'y fait et j'ai comme toujours cette erreur:

    -Mozilla.cpp(54) : error C2447: missing function header (old-style formal list?)
    Alors voici mon (vrai) code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    #include <windows.h>
    #include <stdio.h>
    #include <iostream>
    #include <cstring>
     
    using namespace std;
    void testeMozilla();
    void lit_titre();
     
     
    int main(void) 
    {
     
      HANDLE ParentWnd;
     
      ParentWnd = (HANDLE)0x0000000C;
      if(ParentWnd == NULL) {
      cout<<"Mozilla n'est pas installer sur l'ordinnateur!\n";
        system("PAUSE");
        return 1;
      }
    	else
    		cout<<"Mozilla est installer sur l'ordinnateur\n"<<endl;
     
    testeMozilla();
    return 0;
     
     
    }
     
    void testeMozilla()
    {
     
     
    HANDLE ParentWnd;
     
      ParentWnd = FindWindow("MozillaUIWindowClass",NULL);
      if(ParentWnd == NULL) 
      {
         cout<<"Mais MOzilla FireFox n'est pas lancé\n"<<endl;
          system("PAUSE");
     
      }
      else
    	  cout<<"mozilla est lancé"<<endl;
     
          system("PAUSE");
     
    	  void lit_titre();
     
    }
     
    void lit_titre();
    {
    	HANDLE CWnd;
    CWnd::GetWindowText
    int GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) const;
    void GetWindowText( CString& rString ) const;
     
    // j'ai aussi déclarer les deux autres fonction comme sur la FAQ  qui sont:
    /* 
    CString str;
    pWnd->GetWindowText(str);
    // ou 
    char sz[10];
    int nRet = pWnd->GetWindowText(sz, 10);
    */
    //mais rien n'y fait
    }
    si quelqu'un peut m'aider...

  15. #15
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Code avec inclusions foireuses : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #include <stdio.h>
    #include <iostream>
    #include <cstring>
    Si tu utilises <cstring>, utilise aussi <cstdio>...

    Code nimp' : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    HANDLE ParentWnd;
     
    ParentWnd = (HANDLE)0x0000000C;
    if(ParentWnd == NULL) {
    	cout<<"Mozilla n'est pas installer sur l'ordinnateur!\n";
    	system("PAUSE");
    	return 1;
    } else
    	cout<<"Mozilla est installer sur l'ordinnateur\n"<<endl;
    ????? ??


    PS: Une fenêtre n'est pas représentée par un HANDLE, mais par un HWND.

    Code qui cherche des MFC là où elles ne sont pas : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    void lit_titre();
    {
    	HANDLE CWnd;
    CWnd::GetWindowText
    int GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) const;
    void GetWindowText( CString& rString ) const;
     
    // j'ai aussi déclarer les deux autres fonction comme sur la FAQ  qui sont:
    /* 
    CString str;
    pWnd->GetWindowText(str);
    // ou 
    char sz[10];
    int nRet = pWnd->GetWindowText(sz, 10);
    */
    //mais rien n'y fait
    }
    Ce code ne vaut rien : Tu utilises des classes et fonctions des MFC alors que tu as simplement retrouvé une fenêtre avec l'API Win32 normale...

    Code qui devrait mieux marcher : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //Je rappelle que pour une fenêtre, c'est HWND
    void lit_titre(HWND hMozWnd)
    {
    TCHAR szTitre[80];
    GetWindowText(hMozWnd, szTitre, ARRAYSIZE(szTitre));
     
    cout << "Titre : " << szTitre << endl;
    }

    Bref, on ne programme pas en Win32 au hasard.
    On ne cherche pas à obtenir le titre d'une fenêtre quand on ne sait pas ce qu'est une fenêtre en Win32...

  16. #16
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    Merci du coup de main, mais que signifie ARRAYSIZE et comment le déclart-on.

  17. #17
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    ARRAYSIZE est une macro présente normalement dans les headers de Windows.

    Mais si tu utilises mingW, le plus simple est de redéclarer la macro:
    Code C/C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifndef ARRAYSIZE
    #define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0]))
    #endif
    NOTE: La version de Visual est plus compliquée pour le C++, car pour le C++, elle vérifie qu'on l'applique bien à un tableau et non à un pointeur.

    ARRAYSIZE() donne la taille d'un tableau en éléments et non en octets.
    Indispensable lorsqu'on utilise des TCHARs, car ceux-ci peuvent faire deux octets.

  18. #18
    Rédacteur
    Avatar de pi-2r
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2006
    Messages
    1 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 486
    Points : 2 440
    Points
    2 440
    Par défaut
    Un grand Médinoc

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

Discussions similaires

  1. Récupérer le titre des fenêtres Windows
    Par mareric dans le forum Framework .NET
    Réponses: 2
    Dernier message: 24/02/2012, 10h24
  2. Réponses: 0
    Dernier message: 24/04/2008, 13h17
  3. [VS/C#] => Comment récupérer le titre de ma fenêtre ?
    Par MaTHieU_ dans le forum Windows Forms
    Réponses: 5
    Dernier message: 13/03/2006, 18h00
  4. Colorier la barre de titre des fenêtres
    Par Yvan_F1 dans le forum Composants VCL
    Réponses: 8
    Dernier message: 09/09/2005, 09h08
  5. récupérer la valeur d’une variable de type radio
    Par amelhog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/08/2005, 09h43

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