Saturation de contrôles dans une fenêtre de dialogue

[Résolu]
Signaler
Messages postés
30
Date d'inscription
mardi 15 mars 2005
Statut
Membre
Dernière intervention
6 juillet 2005
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
au cours de la réalisation de mon appli API win32 sous visualc++, je me suis rendu compte que j'étais limité en nombre de contrôles, j'ai un grand nombre d'EditBox à y mettre et pourtant je suis bloqué, COMMENT FAIRE?
Et oui, j'ai également un autre problème, je fait de requêtes sur une base de données que j'ai au préalable créé, donc à l'aide d'un bouton je veux récupérer des données de ma table et les insérer dans une liste, CA JE SAIS FAIRE du moment que ma liste soit dans la même boite de dialogue, et le problème est qu'elle se trouve sur une autre boite.


Merci d'avance romy

3 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Si tu préfères mettre la listes dans une fenêtre, tu peux faire
ceci dans la WndProc de cette fenêtre, pendant le
traitement du message WM_CREATE:

1- Créer la liste avec CreateWindow()

2- Récupérer les données de la base

3- Insérer les données dans la liste



S'il s'agit d'une boite de dialogue, tu peux faire ceci dans la
DlgProc de cette deuxième boite de dialogue pendant le traitement du
message WM_INITDIALOG:

1- Récupérer les données de la base

2- Insérer les données dans la liste

Je suppose que ta liste est en ressource. Dans ce cas pas besoin de la créer.



A l'appui de ton bouton, le programme ne fait que lancer ta fenêtre (ou
boite de dialogue), le reste du travail est fait dans la procédure de
cette derniere. Il ne faut pas oublier de mettre des variables en
global afin qu'elles soient accessibles dans cette procédure.
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Bonjour,

L'éditeur de ressources de Visual C++ limite le nombre de controles à
255. Pour contourner ce problème, il faut créer les controles
dynamiquement grâce à CreateWindow() pendant le traitement du message WM_INITDIALOG.
Il faudra donc autant d'appels à cette fontion que de controles. Pour
éviter cela, tu peux jongler un peu avec les boucles quand c'est
possible.

Pour ta deuxième question, je pense qu'il est préférable d'utiliser des
onglets. Il te permettent de mettre autant de controles que tu veux sur
ta boite de dialogue (EDIT, STATIC, LISTBOX, etc...). Ainsi seuls les
contoles utiles seront montrés et les autres cachés. En appuyant sur
ton bouton, les données sont récupérées de ta base, insérées dans ta
liste puis l'onglet de cette liste est mis au premier plan pour
l'afficher.

Bonne programmation.
Messages postés
30
Date d'inscription
mardi 15 mars 2005
Statut
Membre
Dernière intervention
6 juillet 2005

je suis tout à fait d'accord avec toi, c'est d'ailleurs ce que j'avais fait, et sur ma boite principale j'ai le tabctrl et sur d'autres fenêtres (pour lesquelles j'ai mis comme propriété le style CHILD), j'ai mes différentes listes, à moins que tu voyais ca différemment?
et sais tu, justement si le nombre de boites de dialogue est limité, étant donné que je vais devoir en faire un paquet, peut-être une centaine!!
sinon merci pour ta réponse précedente