[ Win32 ] TabControl - TC_ITEM - ScrollBar - Suppression

Résolu
lectpe Messages postés 162 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 17 juillet 2010 - 11 juin 2010 à 17:38
lectpe Messages postés 162 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 17 juillet 2010 - 12 juin 2010 à 17:29
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.

4 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
12 juin 2010 à 14:09
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.
3
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
11 juin 2010 à 18:04
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
0
lectpe Messages postés 162 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 17 juillet 2010 3
11 juin 2010 à 18:11
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).
0
lectpe Messages postés 162 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 17 juillet 2010 3
12 juin 2010 à 17:29
Bonjour.

C'est ce que je cherchais, merci beaucoup.

Cordialement, Greg.
0
Rejoignez-nous