NodeClick über Windows Messages auswerten



  • Hi,

    ich habe ein Treeview während der Laufzeit erzeugt und mit den entsprechenden Nodes gefüllt nun stehe ich vor dem nächsten Problem, wie werte ich die Nodes über die Windows Messages aus bzw. welche Message benötige ich dafür?

    Danke im Voraus

    grüße

    cable



  • Das TreeView sendet eine WM_NOTIFY an sein Parentwindow.

    In der NMHDR-Struktur findest Du dann alle weitere Info...

    Siehe auch MSDN: TreeView Reference



  • hmm leider löst das Treeview beim anklicken eines Nodes keine WM_NOTIFY Message aus. Woran könnte das liegen?



    • Möglicherweise ist dein Code falsch oder an der falschen Stelle.
    • Es könnte aber auch helfen mit Spy++ zu kontrollieren ob wirklich keine Nachrichten ans Elternfenster geschickt werden, so bekommst du die evtl. doch geschickte Nachricht auch leicht heraus.
    • Ansonsten kenn ich mich mit dem TreeView nicht aus und kann dir da auch nicht weiter helfen, also einfach mal dem Link von Hepi folgen und anfangen zu lesen, vieleicht muss noch irgendein Flag gesetzt sein.


  • Sehr suspekt...

    TVN_ITEMEXPANDED

    MSDN schrieb:

    Notifies a tree-view control's parent window that a parent item's list of child items has expanded or collapsed. This notification message is sent in the form of a WM_NOTIFY message.

    Zeig doch mal deinen Code... wie fängst Du die WM_NOTIFY ab?



  • Nachdem das Fenster registriert, erstellt und angezeigt wird, erzeuge ich das Treeview:

    hTreeMain = CreateWindowEx(0, WC_TREEVIEW, "TreeView",  //WS_EX_CLIENTEDGE
                 WS_VISIBLE | WS_CHILD | TVS_HASLINES | TVS_DISABLEDRAGDROP | 
    
    TVS_HASBUTTONS | TVS_LINESATROOT | TVS_SHOWSELALWAYS,
                 0, 28, 155, 244, g_hMDIClient, (HMENU)ID_TREE, hInstance, NULL);
    

    [...]

    LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM 
    
    lParam)
    {
       switch(Message)
       {
          case WM_NOTIFY:
          {
             MessageBox(0, "Test", "Tree", MB_OK);
             break;
          }
    [...]
    

    Die MessageBox erscheint allerdings nicht. Lediglich am Anfang, wenn des Programmes wird sie zweimal sichtbar und dann beim Resize der Form. Der Doppelklick auf einen Eintrag des TreeViews löst nicht WM_NOTIFY aus.

    Irgendetwas ist daran wohl falsch 😞


Log in to reply