GetDlgItem

mouloudh Messages postés 26 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 5 août 2011 - 29 oct. 2007 à 16:25
codesouce Messages postés 1 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 31 octobre 2007 - 31 oct. 2007 à 12:45
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 oct. 2007 à 18:07
Hors d'une classe MFC, c'est l'API originale avec 2 params qui est appelée.

ciao...
BruNews, MVP VC++
0
mouloudh Messages postés 26 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 5 août 2011
30 oct. 2007 à 08:29
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 !
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 oct. 2007 à 17:38
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++
0
codesouce Messages postés 1 Date d'inscription mercredi 31 octobre 2007 Statut Membre Dernière intervention 31 octobre 2007
31 oct. 2007 à 12:45
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.
0
Rejoignez-nous