Lge C (VC6) : Récupération d'event d1Treeview

Fermé
LDU - 8 janv. 2003 à 11:47
 LDU - 9 janv. 2003 à 15:08
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_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 );
}

1 réponse

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);
}
0