Envoyer un msg a un tab control pour changer de tab [Résolu]

Signaler
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
-
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
-
bon j'aimerais changer la current tab de mon tab control

j'ai ca

case WM_NOTIFY:
{

switch((int)wParam)
{
case IDC_TAB_ICO: //mon tab
{
if(((LPNMHDR)lParam)->code == TCN_SELCHANGE) // Intercepte le message quand on click sur un item de la tab control
{
HWND hTab=((LPNMHDR)lParam)->hwndFrom;
int ItemSel=TabCtrl_GetCurSel(hTab); // On obtient l'item sélectionné
switch(ItemSel)
{
case 0: ....break;
case 1: ....break;
....
case 5: ....break;
}
}
break;
}

bon ici c kan un tab est clické ce k'il fo faire....
j'aimerai envoyer un msg pour faire changer de tab donc naturelement j'ai voulu utiliser
TabCtrl_SetCurSel

1 probleme rencontrer c ke je sais po comment recup le HWND de la tab et d'un apres il suffira de faire TabCtrl_SetCurSel(hwnd de la tab trouver,5);

puis poster un message genre avec SendMessage(hwnd,WM_NOTIFY,IDC_TAB_ICO,la je sais pas);

la je sais pas comment remplir le NMHDR

peut etre comme ca:

NMHDR *nmhdrr;
nmhdrr->hwndFrom=hwnd;
nmhdrr->idFrom=IDC_TAB_ICO;
nmhdrr->code=TCN_SELCHANGE;

si kelk'1 pouvait m'aider car la je suis paumé

merci d'avance
youpi :)

5 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Le plus simple c'est de faire une fct qui se charge de faire les opérations appropriées en fct de l'item sélectioné :
OnUpdateTab()
{
int ItemSel=TabCtrl_GetCurSel(hTab); // On obtient l'item sélectionné
switch(ItemSel)
{
case 0: ....break;
case 1: ....break;
....
case 5: ....break;
}
}

}

Il te suffira d'appeler cette fct lors du changement par l'utilisateur (réception de WM_NOTIFY) ou par propgramme (après SetCurSel);

Pour récupérer le handle, c'est :
GetDlgCtrlId(hDlg, IDC_TAB_ICO);
hDlg : handle du dialogue où est le TabCtrl.
IDC_TAB_ICO : son Id.
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
1
bon j'arrive a recup le hwnd du tab mais tjrs meme probleme j'arrive pas envoyer a IDC_TAB_ICO le msg TCN_SELCHANGE

HWND TabDeTray=FindWindowEx(hwnd, NULL, "SysTabControl32", "Tab1");
if(TabDeTray!=NULL) {
if(TabCtrl_SetCurSel(TabDeTray,5)==-1)
{
//SendMessage(hwnd,WM_NOTIFY,IDC_TAB_ICO,(LPARAM)TCN_SELCHANGE);
}
}

sendmessage est pas bon

youpi :)
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Regarde du coté de TCM_SETCURSEL.
Va voir dans la MSDN.

Shell
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Pour une solution en MFC regarde dans les codes de YMCA2003 il y aura un exemple.
Sinon si tu préfères tout en API, regarde dans mes codes tu trouveras un exemple.

Shell
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
1
ecoute j'ai fais un peu du genre de ymca2003

j'y est pensais
merci les gars
youpi :)