anonyme_man_in_this_world
Messages postés161Date d'inscriptionsamedi 25 juin 2005StatutMembreDernière intervention 1 août 2006
-
31 déc. 2005 à 14:28
julienbj
Messages postés452Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention19 décembre 2008
-
1 janv. 2006 à 14:08
salut !!
malgré mes recherches ,j'ai pas pu bien comprendre le fonctionnement des fonctions enumwindows et findwindow .ça sera simpa si on m'aide a repondre a ces questions :
1- d'apres les sources que j'ai trouvé ,je crois que enumwindows associr le procedure passe en 1 parametre au thread passé en 2 parametre .mais comment obtenur le handle d'un controles trouver dans la fenetre principale sans connaitre son id ??
2-comment faire fonctionner FindWindow?
3- le procedure passe en paratre doit il avoir lui aussi 2 parametre ?
4- comment sont ils identifie ?
5- comment faire parcourir les controles de meme type un par un ?
merçi d'avance
anonyme_man_in_this_world
Messages postés161Date d'inscriptionsamedi 25 juin 2005StatutMembreDernière intervention 1 août 2006 31 déc. 2005 à 18:14
j'ai pu obtenir un handle sur la fenetre ,il ne me reste que savoir comment je peux obtenir un handle la 1 fenetre child situé dans cette fenetre .merçi d'avance
julienbj
Messages postés452Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention19 décembre 200815 1 janv. 2006 à 02:39
/**
* \fn BOOL CALLBACK CloseAllEnum(HWND hwnd, LPARAM lparam)
* Fonction callback d'une fonction énumérant des fenetres.
* Fermeture d'une fenetre enfant
* \brief Fermeture d'une fenetre enfant
* \param hwnd Handle de la fenetre donné par la fonction EnumChildWindows
* \param lparam 0: Inutilisé; !0:Adresse d'une chaine de caractère décrivant le classname des fenetres à fermer
*/
int CALLBACK CloseAllEnum(HWND hwnd, LPARAM lparam)
{
if (lparam == 0)
{
if (!GetWindow(hwnd, GW_OWNER))
DestroyWindow(hwnd);
}
else
{
char buffer[256];
GetClassName(hwnd, buffer, 255);
if (stricmp((LPSTR) lparam, buffer) == 0)
if (!GetWindow(hwnd, GW_OWNER))
DestroyWindow(hwnd);
}
return 1;
}
/**
* \fn void closeAllChild(HWND parent)
* Fermeture de toutes les fenetres enfants
* \brief Fermeture des enfants
* \param parent Handle de la fentre parent
*/
void closeAllChild(HWND parent)
{
EnumChildWindows(parent, CloseAllEnum, 0L);
}
/**
* \fn void closeAllChildClass(HWND parent, char *classname)
* Fermeture de toutes les fenetres enfants d'un type particulier
* \brief Fermeture des enfants
* \param parent Handle de la fentre parent
* \param *classname Classname des fenetres à fermer
*/
void closeAllChildClass(HWND parent, char *classname)
{
EnumChildWindows(parent, CloseAllEnum, (LPARAM) (LPSTR) classname);
}
En gros, ces fonctions ferment tous les controles enfants d'une fenetre en les parcouarnt un par un. En changeant la fonction CloseAllEnum, tu peux faire faire ce que tu veux à chacun des composants de la fenetre parent. Si tu cherches a travailler sur un type de comoosant particulier, utilise le classname de ce composant.
Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
julienbj
Messages postés452Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention19 décembre 200815 1 janv. 2006 à 14:08
Je crois bien qu'elle ne me sert a rien du tout. (Je vois plus pourquoi elle est la), j'ai meme l'impression que c'est une erreur.
Mais l'intéret pour toi n'est pas la.
C'est cette fonction (CloseAllEnum) qu'il faut que tu refasses pour faire ce que tu veux avec tous les controles de ta fenetre..
Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]