Forum » Programiranje » MFC - dialog
MFC - dialog
MV ::
Del programa:
void poisciImenike(CString pot1, HTREEITEM oce1)
{
CFileFind finder;
// CTreeCtrl m_drevo;
BOOL bWorking = finder.FindFile(pot1 + "*.*");
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDirectory() && !finder.IsDots())
{
HTREEITEM oce2 = m_drevo.InsertItem((LPCSTR)finder.GetFileName(),oce1);
CString pot2=sestaviPot(oce2);
PoisciImenike2(pot2,oce2);
}
}
finder.Close();
}
Ukaz HTREEITEM oce2 = m_drevo.InsertItem((LPCSTR)finder.GetFileName(),oce1); bi rad spremenil tako, da bi dobil samo oce2, brez InsertItem.
Kako lahko to naredim?
void poisciImenike(CString pot1, HTREEITEM oce1)
{
CFileFind finder;
// CTreeCtrl m_drevo;
BOOL bWorking = finder.FindFile(pot1 + "*.*");
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDirectory() && !finder.IsDots())
{
HTREEITEM oce2 = m_drevo.InsertItem((LPCSTR)finder.GetFileName(),oce1);
CString pot2=sestaviPot(oce2);
PoisciImenike2(pot2,oce2);
}
}
finder.Close();
}
Ukaz HTREEITEM oce2 = m_drevo.InsertItem((LPCSTR)finder.GetFileName(),oce1); bi rad spremenil tako, da bi dobil samo oce2, brez InsertItem.
Kako lahko to naredim?
- spremenil: MV ()
Kekec ::
Prvo kot prvo poglej si kaj je to REKURZIJA, kajti ta tvoja funkcija je precej salbo napisana!
Glede tvojega vprasanje pa te nisem dober razumel ti bi rad imel en HTREEITEM element ampak ne da ti ga napravi funkcija ko vstavljaš nov element v "drevo".
HTREEITEM je stroktura ki jo lahko kreiras kakor ces in tudi dodelis kakor ces tko da nevidim točno v čem je problem!??
lp!
Glede tvojega vprasanje pa te nisem dober razumel ti bi rad imel en HTREEITEM element ampak ne da ti ga napravi funkcija ko vstavljaš nov element v "drevo".
HTREEITEM je stroktura ki jo lahko kreiras kakor ces in tudi dodelis kakor ces tko da nevidim točno v čem je problem!??
lp!
MV ::
Glede rekurzije:
Ko se zgodi "OnItemexpandedTree1" se mora izvesti funkcija "poisciImenike" znotraj te funkcije pa se mora za vsak imenik, ki ga najde "finder" izvesti funkcija "poisciImenike2", ki poišče podimenike od "finder".
Globina mora biti samo dva nivoja.
HTREEITEM bi rad ustvaril iz objekta finder.
Ko se zgodi "OnItemexpandedTree1" se mora izvesti funkcija "poisciImenike" znotraj te funkcije pa se mora za vsak imenik, ki ga najde "finder" izvesti funkcija "poisciImenike2", ki poišče podimenike od "finder".
Globina mora biti samo dva nivoja.
HTREEITEM bi rad ustvaril iz objekta finder.
wintermute ::
HTREEITEM ni struktura ampak handle, in handla ne mores dobiti "kar tako". Podaja ti jih namrec kontrola.
Ti bi imel torej rad HTREEITEM brez "tree itema"? Po moje se to ne da.
Bos moral verjetno malo spremenit logiko programa. Kaj pa sploh delas, ene sorte directory browser?
Ena moznost je, da locis podatke (v tvojem primeru drevesno strukturo) od kontrole (CTreeCtrl). Zgraditi moras torej podatkovno strukturo (N-ary tree), ki vsebuje tvoje direktorije in/ali datoteke. Not that easy, ampak potem lahko po zelji meces podatke v kontrolo. Pac preberes 2 nivoja, prikazes samo enega.
Druga, lazja moznost pa je, da vsebino dolocenega direktorija pregledas, ko uporabnik razsiri (expand) ta direktorij (TVN_ITEMEXPANDING message, nekaj podobnega). Se pravi v OnItemExpanding funkciji pregledas vsebino direktorija, na katerega je kliknil user in jo vstavis v kontrolo (seveda samo, ce gre za TVE_EXPAND, drugace zbrises childe).
Ne vem, zakaj bi hotel prebrati 2 nivoja, prikazati pa samo enega?
HTH.
Ti bi imel torej rad HTREEITEM brez "tree itema"? Po moje se to ne da.
Bos moral verjetno malo spremenit logiko programa. Kaj pa sploh delas, ene sorte directory browser?
Ena moznost je, da locis podatke (v tvojem primeru drevesno strukturo) od kontrole (CTreeCtrl). Zgraditi moras torej podatkovno strukturo (N-ary tree), ki vsebuje tvoje direktorije in/ali datoteke. Not that easy, ampak potem lahko po zelji meces podatke v kontrolo. Pac preberes 2 nivoja, prikazes samo enega.
Druga, lazja moznost pa je, da vsebino dolocenega direktorija pregledas, ko uporabnik razsiri (expand) ta direktorij (TVN_ITEMEXPANDING message, nekaj podobnega). Se pravi v OnItemExpanding funkciji pregledas vsebino direktorija, na katerega je kliknil user in jo vstavis v kontrolo (seveda samo, ce gre za TVE_EXPAND, drugace zbrises childe).
Ne vem, zakaj bi hotel prebrati 2 nivoja, prikazati pa samo enega?
HTH.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Brezplačna pravna pomočOddelek: Loža | 2133 (1818) | Mare2 |
» | [C#] dodajanje direktorijev v treeview (rekurzija)Oddelek: Programiranje | 849 (711) | paco |
» | Facebook popustil nemških zahtevam po varovanju zasebnostiOddelek: Novice / Zasebnost | 4294 (3133) | PaX_MaN |
» | Ponovna inštalacija programa, zbrisat kaj??Oddelek: Pomoč in nasveti | 706 (624) | amigo_no1 |
» | [C++] Vse datoteke v mapi (portable!)Oddelek: Programiranje | 1307 (1250) | 64202 |