Verzeichnisse



  • For an example, see Opening a File.



  • Danke jetzt funktioniert es.

    Mfg Ominion



  • Ich habe jetzt versucht den Pfad an ein Editfeld zu übergeben. Ich habe es jetzt schon mit SendMessage() und SetWindowText() probiert, hat aber alles nicht geklappt. Weiß jemand wie das geht?

    Mfg Ominion



  • Wie hast du es denn probiert?



  • Tschuldigung, dass ich erst jetzt antworte aber ich hatte noch anderweitige Verpflichtungen.
    Jetzt zu der Frage:
    So

    if (GetOpenFileName (&ofn) == true)
    {
        hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, (LPSECURITY_ATTRIBUTES) NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL);
        SetWindowText (hFile, hf);
    }
    

    So, oder so ähnlich

    SetWindowText (hFile, (LPCSTR)GetOpenFileName (&ofn))
    

    Die SendMessage()-Varianten weiss ich leider nicht mehr. Aber trotzdem ist das meiner Meinung nach nicht relevant, da wenn jemand eine funktionierende Möglichkeit kennt oder wusste, kann er die ja auch hier rein stellen bzw. einen Lösungsansatz posten.

    Mfg Ominion



  • Im Erfolgsfalle liegt der Pfad der Datei in einem Speicherbereich, auf den
    ofn.lpstrFile zeigt.

    Was denkst du dir hierbei 😕

    SetWindowText (hFile, (LPCSTR)GetOpenFileName (&ofn))
    

    Sieh nochmal nach, was GetOpenFileName zurückliefert.



  • Danke. Ich weiß was GetOpenFileName zurück liefert. Das war mehr oder weniger eine Verzweiflungstat, da ich nicht mehr weiter wusste.

    Mfg Ominion



  • Ich habe jetzt noch ein Problem: Ich habe meinen Code wieder kompiliert und immer wenn ich jetzt auf den Button drücke, öffnet sich die DialogBox nicht. Hier mal der Code:

    LRESULT CALLBACK WndProc (HWND hWnd1, UINT message, WPARAM wParam, LPARAM lParam)
    {
    	OPENFILENAME ofn;
    	char szFile[260];
    	HWND hwnd;
    	HANDLE hf;
    
    	ZeroMemory(&ofn, sizeof(ofn));
    	ofn.lStructSize = sizeof(ofn);
    	ofn.hwndOwner = hwnd;
    	ofn.lpstrFile = szFile;
    
    	ofn.lpstrFile[0] = '\0';
    	ofn.nMaxFile = sizeof(szFile);
    	ofn.lpstrFilter = "Alle\0*.*\0Mp3\0*.mp3\0";
    	ofn.nFilterIndex = 1;
    	ofn.lpstrFileTitle = NULL;
    	ofn.nMaxFileTitle = 0;
    	ofn.lpstrInitialDir = NULL;
    	ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    
    	PAINTSTRUCT ps;
    	HDC hDC;
    	HBRUSH hWelcomeBrush;
    
        HWND hOpen;
    	HWND hFile;
    
    	switch (message)
        {
    
    		case WM_CREATE:
    			  hFile = CreateWindow ("ListBox", NULL, WS_CHILD | WS_VISIBLE, 110, 60, 560, 40, hWnd1, (HMENU)1, g_hInst, NULL);
    			  hOpen = CreateWindow ("Button", "Öffnen", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 340, 245, 110, 22, hWnd1, (HMENU)2, g_hInst, NULL);
    		return 0;
    
    		case WM_PAINT:
    	          hDC = BeginPaint(hWnd1, &ps); 
    
                  RoundRect (hDC, 100, 50, 680, 460, 40, 40);
    
    					  hWelcomeBrush = (HBRUSH) SelectObject (hDC, CreateSolidBrush (RGB (255, 0, 0))); 
    				      Ellipse (hDC, 285, 150, 495, 360); 
    				      DeleteObject(hWelcomeBrush);
    
    			  EndPaint (hWnd1, &ps);
    
    	    return 0;
    
    	    case WM_COMMAND:
    			  switch (LOWORD(wParam))
    			  {
    				  case 2:
    					  if (GetOpenFileName(&ofn) == true) 
    					  {
    						  hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, (LPSECURITY_ATTRIBUTES) NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL);
    					  } 							    
    				  return 0;
    			  }
    		return 0;
    
    		case WM_DESTROY:
    			  PostQuitMessage (0);
    		return 0;
    	}
    
        return DefWindowProc (hWnd1, message, wParam, lParam);
    }
    

    Weiß jemand warum?

    Mfg Ominion



  • Scheinbar hat niemand eine Idee. Ich habe jetzt gemerkt, dass beim Buttonclick einfach nicht die Message WM_COMMAND aktiviert wird. Woran könnte das liegen?

    Mfg Ominion

    PS: Quelltext hat sich nicht verändert.

    [EDIT]WM_COMMAND kommt jetzt an. Die DialogBox öffnet sich aber immer noch nicht beim Buttonclick. Wenn ich sieh aber in WM_CREATE reinpacke klappt es. Weiß jemand warum das zwar bei WM_CREATE aber nicht bei WM_COMMAND klappt?[/EDIT]



  • die hwnd variable wird uninitialisiert benutzt. die ist sowieso völlig überflüssig. lösch die und nenn den 1.parameter der funktion hwnd



  • Danke, ich glaub ich hatte da gerade meine Sonnenbrille auf.

    Mfg Ominion


Anmelden zum Antworten