TreeView-Steuerung



  • ...



  • Du fängst beim TreeView WM_KEYDOWN ab und schickst die Nachricht an das andere Fenster oder noch besser, du rufst gleich die entsprechende Func auf.

    Wichtig ist nur, dass er den Tastendruck nicht weiterreichen darf!!
    sprich so ungefähr:

    void OnKeyDown(....)
    {
      if(nKey == n)
      {
        Ansicht->Funktion()
        return;
      }
    
      CTreeView::OnKeyDown();
    }
    


  • ...



  • genau das macht das Ding, es verhindert (denke ich ;)) dass die Selektion verschoben wird und wenn du statt Ansicht->Funktion() deine Rotationsfunktion aufrufst müsste alles klappen.

    EDIT: oder willst du wissen wie du an das selektierte Item kommst??



  • ...



  • @ ESS_CB

    Wie kann man denn eine Nachricht an ein anderes Fenster weiterschicken? bräuchte das in einem anderen Kontext.
    Thx, Matthias.



  • @ orkun
    ich verstehe dein Problem nicht ganz. wenn du die OnKeyDown so ungefähr schreibst, schält die Selektion nicht um:

    void CTreeObjects::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
    {
    	// TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein, und/oder benutzen Sie den Standard.
    
    	//CTreeView::OnKeyDown(nChar, nRepCnt, nFlags);
    }
    

    stattdessen kannst du doch in der Funktion sender und e festlegen und dann die beiden Funcs callen, oder nicht?

    Und wenn es dir darum geht einen Index herauszufinden: wenn du die nodes erstellst weiße dem lparam der TV_INSERTSTRUCT eine eineindeutige Zahl zu, die du bei jeden neuen Item um eins erhöhst.
    Wenn du dann den Index brauchst fragst du einfach lparam für das selektierte Item ab.....

    wie gesagt, ich verstehe dein Problem nicht ganz.....

    EDIT: ich glaub du kannst auch Hooks nehmen um an die inputs in den TreeViews zu kommen. dann muss du nur noch jede OnKeyDown so wie oben bearbeiten.

    @ Herr Latz

    // Fenster wird beschafft
    HWND hwnd = FindWindow(NULL, FensterName);
    
    if(hwnd == NULL)
    	return false;
    
    // Msg wird gesendet
    PostMessage(hwnd, iMsg, wparam, lparam);
    


  • ...



  • orkun schrieb:

    ...mein Problem ist:

    ich möchte verhindern, dass TreeView-Steuerelement auf Tastendruck reagiert.

    dann ändere doch einfach OnKeyDown. Hab ich doch schon gesagt, dann kann man nicht mehr die Markierung mit der Tastatur verschieben.

    Erzähl ich doch die ganze Zeit 😉



  • ...


Log in to reply