PopFileOpenDlg - nur pfad an andere klasse übergeben



  • hi, ich hänge mal wieder. ich habe versucht eine standard open file dialogbox zu implementieren. was ich brauche ist einfach nur den pfad der datei, damit ich diesen in meiner gl-klasse so beutzen kann:

    TextureImageHead=LoadBMP("hier dann der pfad");

    mein problem liegt glaube ich in der korrekten übergabe zur gl-klasse... was genau muss ich übergeben, doch schon das hFile, oder? vor allem steht da dann aber doch mehr drin wie nur der pfad?! bin offen für ideen, denn wenn ich das hFile in meiner gl-klasse eintrage kommmt: udeclared identifier ... wie bekomme ich das hin, dass es angenommen wird...

    Hier der Aufruf:

    LRESULT CALLBACK WndProc(	HWND	hWnd,			// Handle For This Window
    							UINT	uMsg,			// Message For This Window
    							WPARAM	wParam,			// Additional Message Information
    							LPARAM	lParam)			// Additional Message Information
    {
    
    	HMENU hMenu;
    	POINT point;
    
    	switch (uMsg)									// Check For Windows Messages
    	{
    		case WM_CREATE :
    			PopFileInitialize (hWnd); // Initialisierung
            return 0 ;
    
    		case WM_COMMAND:
    			hMenu=GetMenu(hWnd);
    
    			switch (LOWORD (wParam))
    			{
    			case ID_MESH_HEAD:
    			PopFileOpenDlg (hWnd, lpstrDateiname, NULL);
    			hFile = CreateFile(ofn.lpstrFile ,GENERIC_READ, 0, (LPSECURITY_ATTRIBUTES) NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL);
    
    //NUN SOLL IN DER GL-KLASSE NUN IN DER FUNKTION void INITGL() DER AUFRUF //TextureImageHead=LoadBMP("Data/REF/head1.bmp"); ANSTELLE DES STRINGS MIT DEM //PFAD AUS DEM POPFILEDIALOG GEFÜTTERT WERDEN, ANSCHLIESSEN ERNEUTER AUFRUF DER //INITGL
    
    			break;
    

    die funktion:

    // Den "Öffnen" Dialog anzeigen und das Handle zum File zurückliefern
    BOOL PopFileOpenDlg (HWND hwnd, PTSTR pstrFileName, PTSTR pstrTitleName)
    {
       ofn.hwndOwner = hwnd;
       ofn.lpstrFile = pstrFileName;
       ofn.lpstrFileTitle = pstrTitleName;
       ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;
    
       return GetOpenFileName(&ofn);
    }
    

    und deren Initialisierung:

    // Initialisierung der OPENFILENAME-Struktur
    void PopFileInitialize (HWND hwnd)
    {
    // welche Dateitypen sollen ausgewählt werden können
       static TCHAR szFilter[] = TEXT ("Alle Dateien (*.*)\0*.*\0");
    	static char path[MAX_PATH]={""}; 
    
       ZeroMemory(&ofn, sizeof(OPENFILENAME));
       ofn.lStructSize = sizeof (OPENFILENAME);
       ofn.hwndOwner = hwnd;
       ofn.hInstance = NULL;
       ofn.lpstrFilter = szFilter;
       ofn.lpstrCustomFilter = NULL;
       ofn.nMaxCustFilter = 0;
       ofn.nFilterIndex = 0;
       ofn.lpstrFile = path; // Bei Öffnen bzw. Schließen gesetzt
       ofn.nMaxFile = MAX_PATH;
       ofn.lpstrFileTitle = NULL; // Bei Öffnen bzw. Schließen gesetzt
       ofn.nMaxFileTitle = 0;
       ofn.lpstrInitialDir = NULL;
       ofn.lpstrTitle = NULL;
       ofn.Flags = 0; // Bei Öffnen bzw. Schließen gesetzt
       ofn.nFileOffset = 0;
       ofn.nFileExtension = 0;
       ofn.lpstrDefExt = TEXT ("obj");
       ofn.lCustData = 0L;
       ofn.lpfnHook = NULL;
       ofn.lpTemplateName = NULL;
    }
    

    geetz & thnx



  • ja und was ist jetzt dein problem? du hast doch den datei pfad. wenn du deiner LoadBMP funktion ein datei handle übergeben willst, dann schreib sie halt um 😕



  • kann ich nicht einfach das handle irgendwie in einen string wandeln, so dass ich diesen string als variable meiner gl-klasse übergeben kann?
    weiss nicht genau, wie du das meinst, die Funktion umzuschreiben, dass sie ein handle annimmt... dies ist die funktion

    AUX_RGBImageRec* GL::LoadBMP(char *Filename)				// Loads A Bitmap Image
    {
    	FILE *File=NULL;									// File Handle
    
    	if (!Filename)										// Make Sure A Filename Was Given
    	{
    		return NULL;									// If Not Return NULL
    	}
    
    	File=fopen(Filename, "r");							// Check To See If The File Exists
    
    	if (File)											// Does The File Exist?
    	{
    		fclose(File);									// Close The Handle
    		return auxDIBImageLoad(Filename);				// Load The Bitmap And Return A Pointer
    	}
    
    	return NULL;										// If Load Failed Return NULL
    }
    

    bin dankbar für einen tip 😞



  • wieso übergibst du der funktion denn nicht einfach ofn.lpstrFile? Das ist doch schon der pfad zur datei. 😕


Anmelden zum Antworten