Urgent : Récupération d'un événement sur un TreeView

vow Messages postés 54 Date d'inscription mardi 18 septembre 2001 Statut Membre Dernière intervention 27 juillet 2005 - 8 janv. 2003 à 11:36
vow Messages postés 54 Date d'inscription mardi 18 septembre 2001 Statut Membre Dernière intervention 27 juillet 2005 - 9 janv. 2003 à 15:29
Bonjour,

J'ai une fenêtre principale, avec un menu et un toolbar, et une fenêtre secondaire (hwndParent) contenant un treeview.
Je travaille sur Visual C++ 6 mais avec du langage C (ça serait trop facile sinon...).
J'aimerais récupérer l'appel de touches du clavier (WM_KEYDOWN ou WM_KEYUP) mais je n'ai pas encore trouvé comment faire.
Est-ce que quelqu'un pourrait m'aider, svp ?
Merci d'avance.
Salutations.

PS : Voici ma fonction de création de Treeview

HWND CreateTreeView(HWND hwndParent) 
{ 
RECT r;
HWND hwndTV;
 
// La Common Control DLL est chargée
InitCommonControls(); 
 
// Taille de la fenetre parent
GetClientRect(hwndParent, &r); 
hwndTV = CreateWindowEx(
0,
WC_TREEVIEW, 
"Tree View", 
WS_VISIBLE | WS_CHILD | TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT , 
0, 0, r.right, r.bottom, 
hwndParent, 
(HMENU) IDW_BASE, 
g_hInst, 
NULL); 

TreeView_SetBkColor(hwndTV, RGB(255, 255, 255));

// Initialisation de la liste des images
if (LoadImageLists(hwndTV) == FALSE)
{
DestroyWindow(hwndTV); 
return (NULL);
} 

return( hwndTV );
} 

~~~~ Vow ~~~~

1 réponse

vow Messages postés 54 Date d'inscription mardi 18 septembre 2001 Statut Membre Dernière intervention 27 juillet 2005
9 janv. 2003 à 15:29
Voici la solution
Dans la fonction de "création" de la fenêtre :

long CALLBACK PRSMDIChildWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 

// Variable permettant de récuperer les messages sur le Treeview 
LPNMHDR lpNotify; 

// Variable permettant de récuperer les messages de touches sur le Treeview 
LPNMTVKEYDOWN laTouche; 

switch(message) 
{ 

case WM_NOTIFY: 
  lpNotify = (LPNMHDR) lParam; 
  if (lpNotify == NULL) 
   break; 

  // Captures des touches Raccourcis 
  if (lpNotify->idFrom == IDW_BASE 
   && lpNotify->code == TVN_KEYDOWN) 
  { 
   laTouche = (LPNMTVKEYDOWN) lParam; 
   switch (laTouche->wVKey) 
   { 
    case VK_F2: 
     PostMessage(g_hWndMain, WM_COMMAND, IDM_DE_LA_FONCTION_DE_F2, 0L); 
     break; 
    case VK_INSERT: 
     PostMessage(g_hWndMain, WM_COMMAND, IDM_DE_LA_FONCTION_DE_INSER, 0L); 
     break; 
    case VK_DELETE: 
     PostMessage(g_hWndMain, WM_COMMAND, IDM_DE_LA_FONCTION_DE_SUPPR, 0L); 
     break; 
   } 
  } 
  break; 
} 
return(0L); 
} 

~~~~ Vow ~~~~
0
Rejoignez-nous