PL1994 Geschrieben 8. April 2015 Geschrieben 8. April 2015 Hallo, ich habe eine Treeview. Die wird so erstellt: InitCommonControls(); hWndTreeview = CreateWindow(WC_TREEVIEW, TEXT("Treeview"), WS_VISIBLE | WS_CHILD | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS, rcTreeview.left, rcTreeview.top, rcTreeview.right, rcTreeview.bottom, hWnd, (HMENU)ID_TREEVIEW, GetModuleHandle(0), NULL); Das klappt soweit. Wenn ich das richtig verstanden habe, sollte das Event TVN_SELCHANGED als WM_NOTIFY Nachricht an das Parentwindow (hier also hWnd) gesendet werden (https://msdn.microsoft.com/en-us/library/windows/desktop/bb773544(v=vs.85).aspx). Im WndProc des hWnd kann ich auch WM_NOTIFY Nachrichten abfangen. Nur scheinen die IDs nicht zu stimmen. Ich habe das so versucht: LRESULT CALLBACK Controller::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { // [...] case WM_NOTIFY: { NMTREEVIEW* pnmtv = (NMTREEVIEW*)lParam; switch (pnmtv->hdr.idFrom) { case ID_TREEVIEW: char cAction[20]; sprintf_s(cAction, 20, "%d\n %d\n\n", pnmtv->action, TVN_SELCHANGED); OutputDebugString(cAction); break; } break; } } return DefWindowProc(hWnd, message, wParam, lParam); } Die Ausgabe zeigt: Die ID von TVN_SELCHANGED sollte -402 sein. In pnmtv->action steht beim entsprechenden Event aber eine 1. Was stimmt nicht? Gruß PL1994 Zitieren
mfk'); DROP TABLE Users;-- Geschrieben 8. April 2015 Geschrieben 8. April 2015 Deine Erwartung, dass in pnmtv->action TVN_SELCHANGED steht, stimmt nicht. In pnmtv->action steht TVC_BYKEYBOARD, TVC_BYMOUSE oder TVC_UNKNOWN. In pnmtv->hdr.code sollte TVN_SELCHANGED stehen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.