lectpe
Messages postés162Date d'inscriptionlundi 12 novembre 2007StatutMembreDernière intervention17 juillet 2010
-
11 juin 2010 à 17:38
lectpe
Messages postés162Date d'inscriptionlundi 12 novembre 2007StatutMembreDernière intervention17 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.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 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.
mogwai93
Messages postés362Date d'inscriptionmardi 31 décembre 2002StatutMembreDerniè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
lectpe
Messages postés162Date d'inscriptionlundi 12 novembre 2007StatutMembreDernière intervention17 juillet 20103 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).