Lge C (VC6) : Récupération d'event d1Treeview
LDU
-
LDU -
LDU -
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 );
}
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);
}
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);
}