Avatar billede mtilsted Nybegynder
21. februar 2001 - 20:34 Der er 11 kommentarer og
1 løsning

Filrequester

Jeg skal bruge en lille windows der aabner en filrequester og som retunere alle de filer som brugeren har valgt.

Jeg er sikker paa at det kan skrives med 5 linier code, men da jeg aldrig har brugt windows api er det meget svært for mig lige at finde den funktion jeg skal bruge til at aabne en filrequester.

Og funktionen skal bruges i et java program hvor java requesterne er saa grimme/ubrulige at de hvis programmet køre under windows skal udskiftes med windows egne.
Alt det der med jni kan jeg godt klare selv :}

Avatar billede mtilsted Nybegynder
21. februar 2001 - 20:35 #1
OK, starter burde hede
Jeg skal bruge en lille funktion til windows som aabner en filrequester ....

(Haaber i forstaar mig alligivel :}
Avatar billede wisen Nybegynder
22. februar 2001 - 08:03 #2
Der findes et windows API kald :

BOOL GetOpenFileName( LPOPENFILENAME lpofn );
This function creates a system-defined dialog box that enables the user to select a file to open.

lpofn

[in] Long pointer to an OPENFILENAME structure that contains information used to initialize the dialog box. When GetOpenFileName returns, this structure contains information about the user’s file selection.

Return Values

Nonzero indicates that the user specified a file name and clicked the OK button. The buffer pointed to by the lpstrFile member of the OPENFILENAME structure contains the full path and filename specified by the user.

Zero indicates that the user canceled or closed the Open dialog box or that an error occurred. To get extended error information, call GetLastError. GetOpenFileName sets only the ERROR_INVALID_PARAMETER and ERROR_OUTOFMEMORY errors.

... og så vidt jeg kan finde ud af, så ligger den i en \"commdlg.dll\" ...

Prøv at kikke på http://msdn.microsoft.com
Avatar billede borrisholt Novice
22. februar 2001 - 08:24 #3
prøv det her :

#include <windows.h>
#include <Commdlg.h>

int main(int argc, char* argv[])
{
        OPENFILENAME ofn;       
        ofn.lStructSize = sizeof(ofn);
        char fnbuf[32768];
        ofn.hwndOwner = /*Et handle til applikation instans*/;
        ofn.lpstrFilter = \"StringNameTable (*.snt)\\0*.SNT\\0All files (*.*)\\0*.*\\0\\0\";
        ofn.nMaxFile = 32768;
        ofn.lpstrFile = fnbuf;
        ofn.lpstrInitialDir = \"\";
        ofn.Flags = OFN_NOCHANGEDIR | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY | OFN_NOTESTFILECREATE | OFN_EXPLORER | OFN_LONGNAMES;
        ofn.lpstrDefExt = \"SNT\";
        if(GetOpenFileName(&ofn))
        {
            //do stuff
        }

    return 0;
}


Jens B
Avatar billede wisen Nybegynder
22. februar 2001 - 08:29 #4
Borrisholt >> Problemet er, at det skal bruges fra en Java app. Han har altså ikke hverken \"windows.h\" eller \"commdlg.h\" til rådighed. Han skal direkte ind i dll filen...
Avatar billede borrisholt Novice
22. februar 2001 - 08:32 #5
wisen  >> Sikker på del selv om det afvikles som win32 JAVA ?

Jens B
Avatar billede wisen Nybegynder
22. februar 2001 - 08:35 #6
Nææ egentligt ikke, men det burde vel virke, når det er en dll-fil...
Avatar billede soepro Nybegynder
22. februar 2001 - 09:01 #7
Hvis du vil bruge Windows API\'erne i et JAVA program (i sig selv en modstridende interesse), skal du finde (eller lave) en wrapper klasse til det, så du kan basere dit JAVA program på - helt analogt til f.eks. SWING eller AWT klasserne. JBuilder fra Borland ( du kan downloade en foundation version af JBuilder 4.0 fra http://www.inprise.com/downloads/#jbuilder ) indeholder allerede egne klasser præcis til dette.
Avatar billede mtilsted Nybegynder
24. februar 2001 - 23:12 #8
Der er kun et problem med dit eksempel borrisholt. Hvor faar jeg

ofn.hwndOwner = /*Et handle til applikation instans*/;

fra??
Avatar billede mtilsted Nybegynder
24. februar 2001 - 23:17 #9
soepro: Det jeg prøver at lave er netop en funktion i c/c++ som naar den bliver kaldt aabner en filrequester. Naar jeg saa har sadan en funktion skal jeg \"bare\" lave en wrapper som kalder funktionen og sender resultated tilbage til mit java program.
Avatar billede mtilsted Nybegynder
26. februar 2001 - 00:00 #10
Har lige fundet ud af at man bare kan bruge awt i stedet for swing, for at faa de rigtige requestere, saa i behøver ikke svare mere.
Avatar billede wisen Nybegynder
24. april 2001 - 12:43 #11
Kan vi så ikke få lukket spg ????
Avatar billede mtilsted Nybegynder
24. april 2001 - 13:11 #12
Joe.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester