Tree nachträglich im Programm erstellen



  • hallo,

    ich möchte einen Tree nachträglich im Programm erstellen und nicht
    da wo ich meinen Dialog sonst vom aussehen her bearbeiten kann.

    dazu habe ich folgenden code:

    DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_EX_CLIENTEDGE |
                          TVS_HASLINES | TVS_HASBUTTONS | TVS_LINESATROOT | TVS_SHOWSELALWAYS |
                              TVS_DISABLEDRAGDROP | TVS_INFOTIP | WS_TABSTOP;
    
    CTreeCtrl test;
    test.Create(dwStyle,CRect(10, 100, 200, 200),this,0);
    test.ShowWindow(SW_SHOW);
    

    aber es wird einfach nichts angezeigt :-|



  • Das ShowWindow(...) kannst Du Dir sparen, dafür sorgt bereits WS_VISIBLE. Dafür solltest Du

    CTreeCtrl test;
    

    in den Konstruktor der Elternklasse verlagern. Denn dein test haucht sein Leben auf dem Stack der Funktion an der nächsten } aus. Es sollte aber erst durch den Destruktor der Elternklasse beseitigt werden. 😉

    Hier der Beweis:

    void CTreeCtrlTestDlg::OnButton1() 
    {
            DWORD dwStyle = WS_VISIBLE | TVS_HASLINES | TVS_HASBUTTONS | 
    		              TVS_LINESATROOT | TVS_SHOWSELALWAYS | TVS_DISABLEDRAGDROP | 
    									TVS_INFOTIP | WS_TABSTOP;
    
            CRect rect(5,5,100,100);
    
            CTreeCtrl testCtrl;
    
            testCtrl.Create( dwStyle, rect, this, 0);
            testCtrl.InsertItem("Hallo ich lebe noch");
            //testCtrl.ShowWindow(SW_SHOW);
            MessageBox("Jetzt ist CTreeCtrl bzw. das von ihm erzeugte CTreeView sichtbar ");
            Sleep(2000); 
            MessageBox("CTreeCtrl und CTreeView sagen nun good bye");
    }
    


  • achso 🙂

    ja danke stimmt 😉


Anmelden zum Antworten