Bonjour,
J'intègre les nouvelles MFC dans mon appli.
J'utilise CMFCTabCtrl pour gérer les différents onglets d'une dialogue. Pouvez-vous me dire quel événement faut il intercepter pour détecter le changement d'onglet (de tab).
Merci
Bonjour,
J'intègre les nouvelles MFC dans mon appli.
J'utilise CMFCTabCtrl pour gérer les différents onglets d'une dialogue. Pouvez-vous me dire quel événement faut il intercepter pour détecter le changement d'onglet (de tab).
Merci
salut,
le changement de tab declenche deux méthodes:
FireChangeActiveTab et FireChangingActiveTab
ces deux méthodes envoies à la fenêtre parent les messages :
AFX_WM_CHANGE_ACTIVE_TAB et AFX_WM_CHANGING_ACTIVE_TAB
que tu implementes de cette façon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ON_REGISTERED_MESSAGE(AFX_WM_CHANGE_ACTIVE_TAB, OnChangeActiveTab) ON_REGISTERED_MESSAGE(AFX_WM_CHANGING_ACTIVE_TAB, OnChangingActiveTab)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 LRESULT CMyFormView::OnChangeActiveTab(WPARAM wp, LPARAM /*lp*/) { CString str; str.Format (_T("AFX_WM_CHANGE_ACTIVE_TAB: %d"), (int) wp); return 0; } LRESULT CMyFormView::OnChangingActiveTab(WPARAM wp, LPARAM /*lp*/) { CString str; str.Format (_T("AFX_WM_CHANGING_ACTIVE_TAB: %d"), (int) wp); return 0; }
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Merci,
Si ce n'est pas indiscret d'où tiens tu cette info?
J'ai regardé sur MSDN, j'avais pointé la fonction CMFCBaseTabCtrl::FireChangeActiveTab() mais elle n'est pas documentée!
André
je vais chercher directement dans les sources ...
ma méthode:
pour activer un tab on peut utiliser ActiveTab , de la je cherche le code de cette méthode pour voir ce qu'elle fait.
je trouve les méthodes précitées, que je cherche jusqu'à trouver les messages concernés.
il me reste plus qu'a chercher l'utilisation de ces messages , et d'écrire ma réponse pour ce post.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 void CMFCBaseTabCtrl::FireChangeActiveTab(int nNewTab) { CFrameWnd* pParentFrame = AFXGetTopLevelFrame(this); CWnd* pParent = GetParent(); ASSERT_VALID(pParent); pParent->SendMessage(AFX_WM_CHANGE_ACTIVE_TAB, nNewTab, (LPARAM)this); if (pParent != pParentFrame && pParentFrame != NULL) { ASSERT_VALID(pParentFrame); pParentFrame->SendMessage(AFX_WM_CHANGE_ACTIVE_TAB, nNewTab, (LPARAM)this); } m_bSetActiveTabFired = TRUE; } BOOL CMFCBaseTabCtrl::FireChangingActiveTab(int nNewTab) { CFrameWnd* pParentFrame = AFXGetTopLevelFrame(this); CWnd* pParent = GetParent(); ASSERT_VALID(pParent); BOOL bRes = (BOOL) pParent->SendMessage(AFX_WM_CHANGING_ACTIVE_TAB, nNewTab, (LPARAM)this); if (bRes) { return TRUE; } if (pParent != pParentFrame && pParentFrame != NULL) { ASSERT_VALID(pParentFrame); bRes = (BOOL) pParentFrame->SendMessage(AFX_WM_CHANGING_ACTIVE_TAB, nNewTab, (LPARAM)this); } return bRes; }![]()
Ce qui est affirmé sans preuve peut être nié sans preuve Euclide.
Les conversions numériques en C,C++,C++/CLI
DLL d'extensions : écriture d'un plug-in de classe
Démarrer avec les MFC 2/2
Création d'un ActiveX MFC
Intégration d'une imprimante PDF pour éditions automatisées
Migrer du code de Visual C++ 6.0 vers Visual C++ 2005
Démarrer avec les MFC sous Visual C++1/2
la Faq Visual C++ 500 Q/R,Mon blog
Aide en Ligne MFC
Cours et tutoriels C++ - FAQ C++ - Forum C++.
Partager