Envoyer un msg a un tab control pour changer de tab

Résolu
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010 - 20 déc. 2004 à 12:45
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010 - 20 déc. 2004 à 18:58
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

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
20 déc. 2004 à 18:09
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.
3
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
20 déc. 2004 à 13:15
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 :)
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
20 déc. 2004 à 13:25
Regarde du coté de TCM_SETCURSEL.
Va voir dans la MSDN.

Shell
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
20 déc. 2004 à 18:52
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
youpiyoyo Messages postés 539 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 14 juillet 2010
20 déc. 2004 à 18:58
ecoute j'ai fais un peu du genre de ymca2003

j'y est pensais
merci les gars
youpi :)
0
Rejoignez-nous