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 :

[Debutant VC++.net] Obtenir un pointeur sur objet


Sujet :

MFC

  1. #1
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut [Debutant VC++.net] Obtenir un pointeur sur objet
    Bonjour.
    J'aimerais pouvoir récupérer un object CEdit de la facon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CEdit* pCtrl= (CEdit*)GetDlgItem(hwnd,IDC_QUI);
    Le problème est que CEdit est déclaré dans afxwin.h apparement mais je ne peux pas l'inclure car j'ai déjà windows.h et sinon ca donne l'erreur suivante :
    fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
    Je ne peux pas enlever windows.h car sinon ca ne compile pas car il ne trouve pas les déclarations...

    A part ca comment faire pour obtenir ou changer la valeur visible d'un control avec .net ? pour l'instant, j'arrive pas à obtenir de pointeur sur l'objet (c'est bien sûr lié au premier problème ci-dessus) donc je peux pas utiliser les méthodes...

    Merci
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  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
    bonsoir
    La il y a un mélange des genres pas catholiques lol ,
    avec les MFC c'est afxwin.h qu'il faut avoir et pas WIndows.h
    Deusio:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CEdit* pCtrl= (CEdit*)GetDlgItem(hwnd,IDC_QUI);
    vu la signature c'est l'api 32 GetDlgItem que tu appels, tu ne peux pas faire ce que tu as écris cette api renvoie un handle de fenetre HWND le caster en CEdit* ça va faire mal.
    en conséquence il faut choisir ton camp ou tu fais du win32 pur et la ok pour windows.h et tu travaille en apis 32.
    ou tu fais des MFC et la afxwin.h et tu peux mixer MFC et Win32 intelligemment.

  3. #3
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    en conséquence il faut choisir ton camp ou tu fais du win32 pur et la ok pour windows.h et tu travaille en apis 32.
    ou tu fais des MFC et la afxwin.h et tu peux mixer MFC et Win32 intelligemment.
    => je préférerais faire du win32 pur. Comment faire pour récupérer un pointeur sur l'objet edit ? et comment le rendre visible ou non ?

    Merci
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  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
    salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ::ShowWindow(GetDlgItem(hwnd,IDC_QUI),SW_SHOWNORMAL);
    pour les commandes voir MSDN ou la faq a ShowWindow

  5. #5
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    Effectivement, ca marche. Comment as tu fais pour trouver la méthode. J'ai cherché dans l'aide sans rien trouvé....sans doute que je n'ai aps tapé la bonne chose.
    En tout cas, merci. Je vais relire la FAQ pour le reste...
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  6. #6
    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,
    Je vais te confier mon secret ,10 ans de pratique quotidienne des MFC je commence à connaître les principales apis 32 par cœur.
    Deuxième aspect :
    Les MFC encapsulent les apis de base windows dans des classes et les fonctions portent le même nom :
    Exemple :
    En api 32 :
    BOOL ShowWindow(
    HWND hWnd,
    int nCmdShow );

    en MFC:
    CWnd::ShowWindow
    BOOL ShowWindow (
    int nCmdShow );

    pareil avec EnableWinow etc…
    le handle à disparu normal il devient une donnée membre de la classe CWnd.

    Donc toutes les fonctions de base sur une fenêtre sont dans la classe CWnd ,
    Il suffit de regarder ensuite dans l’aide MSDN à CWnd de voir les fonctions classées par groupe de travail et tu as par la même occasion l’api 32 équivalente….
    Donc si tu connais et pratique les MFC tu connais aussi les apis 32
    C’est aussi pour ça que dans la faq j’ai mis un chapitre sur la classe fenêtre CWnd ou on retrouve les principales fonctions de manipulations sur une fenêtre.

  7. #7
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    C'est génial, je viens de comprendre un peu plus la philosophie MFC grâce à toi.
    Merci beaucoup
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

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

Discussions similaires

  1. [C#.NET] Obtenir Dimensions Image sur un fichier Uploader
    Par t1marlartiste dans le forum ASP.NET
    Réponses: 3
    Dernier message: 21/02/2008, 15h57
  2. pointeurs sur objets en C #
    Par lemya dans le forum C#
    Réponses: 3
    Dernier message: 02/01/2008, 12h13
  3. Pointeur sur objet different
    Par peruvio dans le forum C++
    Réponses: 4
    Dernier message: 19/11/2007, 20h06
  4. Pointeur sur objet
    Par bubulemaster dans le forum Débuter
    Réponses: 5
    Dernier message: 26/09/2007, 09h10
  5. Tableau de pointeurs sur objets
    Par bassim dans le forum C++
    Réponses: 11
    Dernier message: 13/12/2005, 19h45

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