Bonjour,
J'ai un programme MFC qui est organisé comme cela :
- Une MainFrame (appelée CMainFrameTabbed) qui embarque un TabCtrl.
- La 1ere vue de ce TabCtrl est une CMiniFrameWnd (appelée CFrameMibBrowser) avec un splitter
- un CtreeView (appelée CMibBrowserLeftTree) sur la vue de gauche de ce CMiniFrameWnd
- et un CFormView sur la vue de droite de ce CMiniFrameWnd.
- La 2eme vue de ce TabCtrl est une CListView
Je trace toute les pertes de focus ainsi que toutes les reprises du focus (du moins je l'espère) dans l'application.
Lors de l'initialisation de l'application, c'est la CTreeView (appelée CMibBrowserLeftTree) qui doit avoir le focus et voici les trace que je récolte :
Pour une raison que j'ignore, CMibBrowserLeftTree prend le focus (ligne en vert) et le perd aussitôt (ligne en rouge).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CMainFrameTabbed::OnActivate(state=1, oldWnd=0000000000000000) CMainFrameTabbed(00000000002105A6) ==> Gaining the focus, 0000000000000000 is loosing it CMainFrameTabbed(00000000002105A6) ==> Setting focus to 00000000003002AE CMainFrameTabbed(00000000002105A6) ==> Loosing the focus, 00000000003002AE will gain it CFrameMibBrowser(00000000003002AE) ==> Gaining the focus, 00000000002105A6 is loosing it CFrameMibBrowser(00000000003002AE) ==> Setting focus to 00000000002802DC CFrameMibBrowser(00000000003002AE) ==> Loosing the focus, 00000000002802DC will gain it OK ==> CMibBrowserLeftTree(00000000002802DC) ==> Gaining the focus, 00000000003002AE is loosing it BAD ==> CMibBrowserLeftTree(00000000002802DC) ==> Loosing the focus, 00000000000E0428 will gain it
Les valeurs que j'affiche sont les HWND des fenêtres et en regardant avec Spy++, la fenêtre dont le HWND est E0428 (ligne en rouge) est inconnu.
Et bien sûr, mon CTreeView n'a pas le focus, c'est à dire que l'appui sur les flèches du clavier ne me fait pas me promener dans l'arbre (comportement par défaut attendu).
Par contre, dès que je clique dans le CTreeView, je récupère le focus, je ne le reperds plus et le comportement par défaut avec les flèches du clavier fonctionne. Voici les traces que j'obtiens :
Qui peut me dire ce qu'il se passe, j'ai l'impression que j'ai un problème d'activation de mes fenêtres. En attachement, une vue dans l'application pour fixer les idées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CMibBrowserLeftTree::OnActivateView(bActivate=1) CMibBrowserLeftTree(00000000004B02DE) ==> Gaining the focus, 0000000000000000 is loosing it
Merci d'avance
Partager