begin process at 2012 05 30 15:11:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

recuperation du texte d'une boite de dialogue


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

recuperation du texte d'une boite de dialogue

mardi 7 décembre 2004 à 13:22:09 | recuperation du texte d'une boite de dialogue

demar016

pour ca j'utilise les tris focntions ci-dessous:
GetNextDlgGroup
GetDlgCtrID
GetDlgItemText

mais je n'arrive pas à récupérer l'identifiant du controle qui me permettrait d'avoir le texte correspondant.
en fait le next ne marche pas, il reste bloquer sur l'identifiant du bouton.

while(j<20)
{
lhwnd_control = GetNextDlgGroupItem(
hwnd, // handle of dialog box
lhwnd_control1, // handle of control
FALSE // direction flag
);
if (lhwnd_control != NULL)
{
i= GetDlgCtrlID(
hwnd_control // handle of control
);
GetDlgItemText(
hwnd , // handle of dialog box
i,//IDC_EDIT, //int nIDDlgItem, // identifier of control
ls_texte, // address of buffer for text
255 // maximum size of string
);

}
lhwnd_control1 = lhwnd_control;
lhwnd_control = NULL;
j++;
}

g fait une boucle de 20 pour voir la progression du next

Merci
mardi 7 décembre 2004 à 16:33:37 | Re : recuperation du texte d'une boite de dialogue

mezlan

Bonjour,

Pour récupérer l'identifiant suivant il faut utiliser :
GetWindow(GW_HWNDNEXT).

Voici la fonction Avancer qui peut répondre à tes attentes et un exemple d'utilisation:

Déclarer comme variable membre :
CWnd* m_pWndCourant ;

ensuite si tu veux tester sur 20 élément de ta boite de dialogue:
int j=0;
m_pWndCourant = NULL;
while(j<20)
{
Avancer(m_pWndCourant);
j++
}

//La fonction Avancer permet de récupérer le texte des éléments d'une boite de dialogue dans l'ordre du TabOrder.
void Avancer(CWnd *pWndCtl)
{
int index;
CString strTexte;
if(pWndCtl == NULL)
{
m_pWndCourant = GetNextDlgGroupItem(pWndCtl,FALSE);
index = m_pWndCourant->GetDlgCtrlID();
GetDlgItemText(index,strTexte);
TRACE(_T("Texte[%d]:%s\n"),index,strTexte);
}
if(pWndCtl != NULL){
m_pWndCourant = pWndCtl->GetWindow(GW_HWNDNEXT);
index = m_pWndCourant->GetDlgCtrlID();
GetDlgItemText(index,strTexte);
TRACE(_T("Texte[%d]:%s\n"),index,strTexte);
}

}
Mezlan
mardi 7 décembre 2004 à 18:02:28 | Re : recuperation du texte d'une boite de dialogue

demar016

merci, je vais tester ça
mercredi 8 décembre 2004 à 09:32:02 | Re : recuperation du texte d'une boite de dialogue

demar016

Ca marche pas, la methode GetWindow ne me fait pas passer sur un autre controle
mercredi 8 décembre 2004 à 11:13:22 | Re : recuperation du texte d'une boite de dialogue

mezlan

Ce code marche pour mes boites de dilogues:

CWnd* lhwnd_control;
CWnd* lhwnd_control1 = NULL;
int j=0;
int i;
char ls_texte[64];
while(j<20)
{
if (lhwnd_control1 == NULL){
lhwnd_control = GetNextDlgGroupItem(lhwnd_control1, FALSE );
if (lhwnd_control != NULL)
{
i= lhwnd_control->GetDlgCtrlID();
GetDlgItemText(i, ls_texte, 255 );
TRACE("Texte[%d]:%s\n",i,ls_texte);
}
}
else{
lhwnd_control = lhwnd_control1->GetWindow(GW_HWNDNEXT);
i= lhwnd_control->GetDlgCtrlID();
GetDlgItemText(i, ls_texte, 255 );
TRACE("Texte[%d]:%s\n",i,ls_texte);
}
lhwnd_control1 = lhwnd_control;
lhwnd_control = NULL;
j++;
}
Qu'est ce que tu récupères exactement?
un premier texte, rien du tout?
T'as une erreur?
Les ressources de ta boite de dialogues sont elles OK?

Mezlan
mercredi 8 décembre 2004 à 11:43:29 | Re : recuperation du texte d'une boite de dialogue

demar016

Moi je n'utilise pas la classe CWnd mais HWND, en fait je recupere le HWND de la dialogue box, mais le GetWindow ne marche pas correctement, je trouve juste mon bouton OK, et je n'arrive pas à obtenir un autre controle pour avoir le texte.

voici le code que j'utilise:
while(j<20)
{
if(lhwnd_control == NULL)
{
lhwnd_control = GetNextDlgGroupItem(hwnd,lhwnd_control,FALSE);
index = GetDlgCtrlID(lhwnd_control);
GetDlgItemText(hwnd,index,strTexte,255);
TRACE(_T("Texte[%d]:%s\n"),index,strTexte);
}
if(lhwnd_control != NULL)
{
lhwnd_control = GetWindow(hwnd,GW_HWNDNEXT);
lhwnd_control = GetNextDlgGroupIte(hwnd,lhwnd_control,TRUE);
index = GetDlgCtrlID(lhwnd_control);
GetDlgItemText(hwnd,index,strTexte,255);
TRACE(_T("Texte[%d]:%s\n"),index,strTexte);
}
j++;
}
mercredi 8 décembre 2004 à 11:59:04 | Re : recuperation du texte d'une boite de dialogue

demar016

OK, je viens de modifier mon code en fonction de ton dernier message. G enfin reussit à recuperer mon texte.

voici le code avec un HWND

int j=0;
int index;
//CString strTexte;
char strTexte[255];
while(j<20)
{
if(lhwnd_control1 == NULL)
{
lhwnd_control = GetNextDlgGroupItem(hwnd,lhwnd_control1,FALSE);
index = GetDlgCtrlID(lhwnd_control);
GetDlgItemText(hwnd,index,strTexte,255);
TRACE(_T("Texte[%d]:%s\n"),index,strTexte);
}
else
{
lhwnd_control = GetWindow(lhwnd_control1,GW_HWNDNEXT);
index = GetDlgCtrlID(lhwnd_control);
GetDlgItemText(hwnd,index,strTexte,255);
TRACE(_T("Texte[%d]:%s\n"),index,strTexte);
}
lhwnd_control1 = lhwnd_control;
lhwnd_control = NULL;
j++;
}


par contre comment savoir quand s'arreter pour eviter une boucle aleatoire comme je fait en ce moment

Merci pour ton aide
mercredi 8 décembre 2004 à 12:40:12 | Re : recuperation du texte d'une boite de dialogue

mezlan

Dans la boite de dialogue les contrôles sont numérotées de 1 à x par le taborder.
Dans mon exemple c'est le bouton CANCEL avec l'ID = IDCANCEL qui est le dernier élément de ma boite de dialogue.

int index;
char strTexte[255];
while(index != IDCANCEL)
{
if(lhwnd_control1 == NULL)
{
lhwnd_control = GetNextDlgGroupItem(hwnd,lhwnd_control1,FALSE);
index = GetDlgCtrlID(lhwnd_control);
GetDlgItemText(hwnd,index,strTexte,255);
}
else
{
lhwnd_control = GetWindow(lhwnd_control1,GW_HWNDNEXT);
index = GetDlgCtrlID(lhwnd_control);
GetDlgItemText(hwnd,index,strTexte,255);

}
lhwnd_control1 = lhwnd_control;
lhwnd_control = NULL;
j++;
}

Si ce code doit être valable pour plusieurs boîtes de dialogue
il faut faire en sorte que le même contôle soit le dernier(dans l'ordre du taborder).
Peut importe le nombre de contrôles de chaque boites de dialogue.

Ce n'est qu'une astuce, je ne sais pas si cela te conviendras.

Mezlan
mercredi 8 décembre 2004 à 13:18:25 | Re : recuperation du texte d'une boite de dialogue

demar016

ok merci


Cette discussion est classée dans : texte, control, handle, of, lhwnd


Répondre à ce message

Sujets en rapport avec ce message

Ecrire du texte [ par angsthase ] Salut à tous Je voudrais créer un fichier texte et y ecrire quelquechose dedans, mais je n'y arrive pas. Le fichier ce créer bien, mais il n'y a rien control personalisé [ par kev03 ] bonjour,je souhaite créer une sorte de tableau. Les elements de la première colonne sont chacun une serie de nom et ceux de la deuxieme colonne chacun le handle d'un control static? [ par blackwizzard ] comment connaitre le handle ou HWND d'une zone "Static" contenant une image en mode fenetré?merci d'avance! [C win32] Comment changer le texte d'un control static [ par Zestyr ] Bonjours, Comment changer le label ou la value (je sais pas vraiment comment ça s'appelle) d'un control STATIC pour le rendre dynamique. Merci de vo SHELL EXECUTE ET HANDLE [ par nike547 ] Bonjour, j'ai besoin de votre aide... En fait j'ouvre une application à partir de mon programme avec la fonction ShellExecute() mais je n'arrive pas à Statistiques sur un fichier texte - Programmation C [ par lakreem ] Je veux un programme qui détermine dans un fichier texte donné: - le nombre de caractères qu'il contient, - le nombre de chacune des lettres de l'al codage d'un fichier texte avec c++ [ par mame06 ] salut tout le monde voilà je dois crypter et décrypter un fichier texte en c++ et mon grand probleme c'est que je suis débutante en c++. alors j'ai d Recuperer texte dans une fenetre active [ par iba7t ] Bonjour, je veux developper un programme en c++ qui me permet de recuperer les champs texte présents dans une fenetre active, independament du program Récupèrer Handle de fenetre [ par LaTatadu91 ] Bonjour, J'ai un problème avec cette fonction [code=cpp]HWND hWnd = FindWindow(0, "Server Config");[/code] qui est pourtant censée me renvoyer un Han Empécher redimentionement colonne List Control [ par jerem3000 ] Bonjour, Je suis en train de développez une petite application dedans il y a une List Control, il y a 3 colonnes et j'aimerais quels ne puisse pas êt


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,061 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales