Я создал главное окно (CreateWindowEx) с процедурой событий, установленной с помощью WNDCLASSEXW:
wcex.lpfnWndProc = WndProc;
.
Далее я создал дочернее окно, которое используется как древовидное представление:
HWND hwndTRV = CreateWindowEx(
WS_EX_CLIENTEDGE,
WC_TREEVIEW,
TEXT("Tree View"),
WS_VISIBLE | WS_CHILD | WS_BORDER | TVS_HASLINES | TVS_EDITLABELS,
0,
0,
rcClient.right,
rcClient.bottom,
hwndParent,
NULL,
hInstance,
NULL);
Я хотел бы обработать древовидное представление, определяющее c события в отдельной функции. Я использую следующий код:
SetWindowLongPtr(hwndTRV, GWLP_WNDPROC, (LONG_PTR)TRVProc);
Как мне реализовать TRVPro c? Вот пример кода: события TVN_BEGINLABELEDIT и TVN_ENDLABELEDIT не отображаются в TRVPro c:
LRESULT CALLBACK TRVProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_NOTIFY:
{
LPNMHDR l = (LPNMHDR)lParam;
switch (l->code)
{
case TVN_BEGINLABELEDIT:
{
return 0;
}
case TVN_ENDLABELEDIT:
{
return 1;
}
}
}
}
return CallWindowProc(WndProc, hWnd, message, wParam, lParam);
}
Сообщение l oop выглядит следующим образом:
while (GetMessage(&msg, nullptr, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}