[ Win32 ] TabControl - TC_ITEM - ScrollBar - Suppression [Résolu]

Signaler
Messages postés
162
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2010
-
lectpe
Messages postés
162
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2010
-
Bonjour à tous.

Je suis en train de réaliser une application avec l'API Win32.
J'ai un TabControl dans lequel j'ai plusieurs TC_ITEM.

J'ai deux questions :
- Si une scrollbar est présente sur l'un de ces TC_ITEM, comment faire défiler le contenu de ce TC_ITEM ?

- Si des éléments HWND sont présents dans chaque TC_ITEM, comment, à la suppression d'un item, reconnaître quels éléments HWND (dont le control parent est le TabControl) il faut supprimer ?

En espérant que vous puissiez me venir en aide, je vous remercie par avance.

Cordialement, Grégory.
A voir également:

4 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
11
Salut,
Le membre lParam de la structure TCITEM te permet de mémoriser le HWND du bouton que tu veux associer à chaque onglet. Ce membre peut être utilisé pour sauvegarder n'importe quelle valeur 32 bits en Win32. S'il s'agit du handle d'un bouton, il suffira donc de récupérer cette valeur, juste avant la suppression de ton onglet, et la passer en paramètre à DestroyWindow(). Je suppose que le bouton a été créé dynamiquement à la création de l'onglet. Les macros TabCtrl_SetItem() et TabCtrl_GetItem() sont utilisées respectivement pour définir puis lire le contenu des membres de la structure TCITEM d'un onglet donné.
Le membre lParam pourrait contenir un pointeur sur une structure personnalisée qui contiendra toutes les données que tu veux associer à ton onglet.
A mon avis, il est préférable d'utiliser des boites de dialogue pour rassembler des contrôles dedans. Chaque boite de dialogue est associée à un onglet. Juste avant la suppression d'un onglet, on récupère le HWND le la boite associée depuis le membre lParam et le passer en paramètre à EndDialog().
Je pense que l'utilisation des boites de dialogue te permettra aussi de résoudre le problème de ta première question.
Messages postés
361
Date d'inscription
mardi 31 décembre 2002
Statut
Membre
Dernière intervention
19 mars 2015

salut

1) "- Si une scrollbar est présente sur l'un de ces TC_ITEM, comment faire défiler le contenu de ce TC_ITEM ? "
--> Il te faut créer une nouvelle fenêtre dans ton onglet, ensuite tu places tes widgets dessus
la scrollbar appellera ScrollWindow sur cette fenetre


2) Pas compris la question
Messages postés
162
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2010
2
Merci d'avoir répondu.

Pour la deuxième question, je ré-explique :

Si dans un TabControl j'ai trois TC_ITEM dont chacun d'eux possède un élément "button", et que j'appelle la macro TabCtrl_DeleteItem en lui donnant en paramètres le TabControl et l'identifiant 1 (correspondant donc au 2e onglet, celui du milieu), je veux également supprimer le bouton qui est présent sur ce TC_ITEM (et pas supprimer le bouton présent sur le premier ou le dernier TC_ITEM).
Messages postés
162
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
17 juillet 2010
2
Bonjour.

C'est ce que je cherchais, merci beaucoup.

Cordialement, Greg.