Hvordan laver jeg en dialog, hvor jeg beder brugeren vælge et directory (grafisk vælgning, hvor brugeren ser hele træet)? Det er en predefined dialog, tror jeg, men eg finder ikke ud af det.
hvis du bruger MFC så vil en browse function se således ud:
CString Browse() {
UpdateData(TRUE); BROWSEINFO browseInfo;
//-------------------------------------------------------------------- // Local variables for use in th BROWSEINFO struct //-------------------------------------------------------------------- char res[MAX_PATH]; char path[MAX_PATH]; HWND hWnd; hWnd = this->GetSafeHwnd();
//--------------------------------------------------------------------- // pointer to a Item ID list //--------------------------------------------------------------------- LPCITEMIDLIST selectedPidl;
//--------------------------------------------------------------------- // Translating the item ID list to a human readable CString //--------------------------------------------------------------------- SHGetPathFromIDList(selectedPidl, path);
Det er jo næsten det samme.. min kode viser bare kun folders.. det er jo det du vil have ikke? Du laver bare en funktion og kopierer det kode i den.. Jeg forstår ikke helt hva du har problemmer med.. ? foklar lidt mere .. måske vis lidt af din kode.
Jeg får ikke din kode at virke. Eg prøvede at include headeren til BROWSEINFO, det virkede Men så prøvede jeg at include headeren til CString, findes ikke. Hvad går Cstring ud på?
Ja jeg bruger MFC... skrev også i det første svar... men du skal ikke bruge CString.. prøv sadan:
Browse() {
UpdateData(TRUE); BROWSEINFO browseInfo;
//-------------------------------------------------------------------- // Local variables for use in th BROWSEINFO struct //-------------------------------------------------------------------- char res[MAX_PATH]; char path[MAX_PATH]; HWND hWnd; hWnd = this->GetSafeHwnd();
//--------------------------------------------------------------------- // pointer to a Item ID list //--------------------------------------------------------------------- LPCITEMIDLIST selectedPidl;
//--------------------------------------------------------------------- // Translating the item ID list to a human readable CString //--------------------------------------------------------------------- SHGetPathFromIDList(selectedPidl, path);
nej.. hør her.. Browse() er bare det funktionsnavn jeg har valgt.. kald det hvsomhelst... det er koden ind i funktionen som gør arbejdet.. bare kopier det i din program.. jeg ved ikke hvordan du har opbyget din applikation.. post noget kode evt..
killer_bee> Din Browse() funktion returnerer en lokalt allokeret variabel. Måske gør VC++ at det går godt, men det er alligevel ikke pænt. Alloker path et andet sted, eller lad den der kalder Browse() om at allokere den. Og hvis det er C++, så brug en std::string reference i stedet for:
olennert<< hvis du kigger på mit første svar så bliver path returneret... men ormurin ku ikke bruge CStrings... derfor siger jeg at han skal bare bruge koden uden Cstring... og eftersom jeg ikke ved hvordan hans application er opbyget.. lyder som om han har bare 1 stor main program.. Jeg ved udemærket at man ikke kan returnere det path pointer.. men han skal vel lære :o)
alos, når det kommer til windows.h, så bliver jeg forvirret.. Jeg har kun læst nogle korte tutorials. Så hav mig undskyldt...
Det lyder fornuftigt med void Browse.. Men skal jeg kalde browse(); når jeg vil have brugeren at vælge en foldeR? (eller har jeg helt mistet forstanden)
PS: brug ikke MS lort. Det er for dyrt=) Borland er godt, men også dyrt. Jeg kører altid (om mulgit) på freeware .. --> www.blodshed.com (god c/c++ compiler)
BROWSEINFO er udefineret... (complier). Jeg tror at det er det eneste problem nu.. brugte foresten ikke void, men char.
Hvordan mener du med mere info om mit prog? Det det går ud på er, at ved at trykke på en (menu)knap, skal vælgeren vælge en folder. Lyder simpelt, men....
Jeg er inden i WindowProcedure(****). Når den fanger signalet fra menuknappen skal den starte en dialog, som giver brugeren mulighed for at vælge en folder.
En dev-cpp løsning ville se ud som følger (note, jeg bruger gcc og ikke mingw der vist er standard med dev-c++, jeg tror dog ikke der er nogen forskel):
//-------------------------------------------------------------------- // Local variables for use in th BROWSEINFO struct //-------------------------------------------------------------------- char res[MAX_PATH]; char path[MAX_PATH]; //--------------------------------------------------------------------- // pointer to a Item ID list //--------------------------------------------------------------------- LPCITEMIDLIST selectedPidl;
//--------------------------------------------------------------------- // Translating the item ID list to a human readable CString //--------------------------------------------------------------------- SHGetPathFromIDList(selectedPidl, path);
få nu fingeren ud og luk FFS.. hader når folk er så røvligeglade EFTER de har fået hjælp!!!!!!!!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.