GetDlgItem

Signaler
Messages postés
26
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
5 août 2011
-
Messages postés
1
Date d'inscription
mercredi 31 octobre 2007
Statut
Membre
Dernière intervention
31 octobre 2007
-
Salut la communauté,

Je travaille sur un projet perso (je suis en plein apprentissage de VC++ en MFC) -
Mon projet est de type CDialog, avec des fonctions MaClasse::fonction() de type static void. J'ai également une fonction globale fonctionglobale (j'essaie en réalité d'implémenter des thread - au travers d'un exemple que j'ai eu d'un livre).

Lorsque j'insère le code suivant dans une fonction de type MaClasse::fonction(), cela marche. L'image apparait ou disparait selon (ShowWindow(SW_HIDE)) . Si par contre, je l'insère dans fonctiongloabale(), le compilateur me réponds que GetDlgItem ne prends pas un seul parametre.

code:

        CWnd* wnd=NULL;
        {
               CWnd* wnd=GetDlgItem(IDC_COLIHASH_S_1);
               wnd->ShowWindow(SW_HIDE);
        }
Comment faire pour résoudre le problème?
Merci infiniment pour toute aide!

Make it simple, keep it easy !

4 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Hors d'une classe MFC, c'est l'API originale avec 2 params qui est appelée.

ciao...
BruNews, MVP VC++
Messages postés
26
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
5 août 2011

Merci BruNews, je te crois évidemment pour le principe, c'est donc l'API originale avec 2 params qui est appelée.

Sauf que pour moi, qui suis encore débutant, cela n'est pas très parlant -
Il est vrai que lorsque j'écris GetDlgItem, le VC++6 me propose quelque chose comme (HWND hDlg, int nIDDlgItem). Je comprends que le second parametre corresponds à mon IDC_COLIHASH_S_1, le premier paramètre à quelque chose en rapport avec ma fenêtre (je pense ma classe CDialog). Enfin, bref, je ne vois ou inserer le HWND et comment de déclarer dans la fonction globale.

Qu'en est il exactement de la syntaxe de l'API originale, dans le ce cas de figure?

Merci infiniment pour toute aide, et Merci à toi, BruNews !

En attendant, je vais essayer de creuser encore l'idée!

Make it simple, keep it easy !
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
On ne répètera jamais assez qu'on ne doit pas débuter avec des surcouches qui masquent l'implémentation, que soit MFC ou nimporte quelle autre.
La prog Windows doit s'apprendre par l'API.

ciao...
BruNews, MVP VC++
Messages postés
1
Date d'inscription
mercredi 31 octobre 2007
Statut
Membre
Dernière intervention
31 octobre 2007

GetDlgItem

obtenir le pointeur CWnd et pour expliquer celle-là il faut mieu regarder dans ce lien: http://msdn2.microsoft.com/en-us/library/1xb05f0h(VS.80).aspx
HWND est un handle d'une fenetre, en fait c'est un numero unique proposé par windows et qui ne se repete pas.

dans une class sous MFC GetDlgItem va te donner seulement le parametre ID et ne pas HWND.
hors d'une class MFC tu vas voir une autre parametre celle de hwnd !!! celle-là

c'est l'identifiant du formulaire.

pour savoir ce que signifier la syntaxe de l'API originale!!! essaye de faire ça:
sous ton VC++ fais:
File puis -> New puis dans l'anglette Projects choisi: Win32 Console Application , entrer le nom de ton projet puis appui sur ok, et essai de faire une fenetre windows comme celle de MFC .
voilàc'est simple non

baaah si tu connais pas ces choses donc je te conseil de ne pas travailler sous MFC car c'est pas fait pour les debutants, mais bon tant pis tu vasjuste perdre ton temp sans rien apprendre.