Fileopen



  • Hi

    Ich möchte einen Fileopendialog anzeigen indem man ein Bild auswählen kann.
    Das Bild sollte dann in einer Picturebox (IDC_STATIC) angezeigt werden.
    Ich benutzer das Studio 6 (C++)

    Die 2. Frage ist, wie kann ich eine andere Form z.B IDD_EINSTELLUNGEN_DIALOG anzeigen, wenn ich auf einen Button klicke?



  • tach auch ,

    // öffen des Open/Save Dialoges	
    	CFileDialog cfd(TRUE , "bmp" , NULL, OFN_HIDEREADONLY  , "bmp files(*.bmp)|*.xml|alle Files(*.*)|*.*|" , NULL);
    	if(cfd.DoModal() == IDOK )
    	{
    	  //mache was
    	}
    
    // andere fenster aufrufen
       fenstername.DoModal()	// wenn es ein modales fenster weren soll
       fenstername.Create(IDD..);// ein nicht modales fenster (bearbeitung eines anderen Fensters möglich)
    

    //mit der Picturebox habe ich mich noch nicht beschäftigt..



  • Wie kann ich denn den Pfad und die Datei aus dem Filedialog auslesen?
    Kennst du noch gerade den Aufruf für den Druckerdialog???



  • Den Pfad kannst du mit GetPathName() auslesen !

    Gruß
    :: NoName ::



  • Das Fenster öffnen funktioniert bei mir nicht!

    Ich rufe es so auf:

    IDD_BAUSTELLE_DIALOG.DoModal();
    

    und erhalte immer diesen Fehler:

    error C2228: Der linke Teil von '.DoModal' muss eine Klasse/Struktur/Union sein
    


  • addict schrieb:

    Das Fenster öffnen funktioniert bei mir nicht!

    Ich rufe es so auf:

    IDD_BAUSTELLE_DIALOG.DoModal();
    

    und erhalte immer diesen Fehler:

    error C2228: Der linke Teil von '.DoModal' muss eine Klasse/Struktur/Union sein
    

    IDD_BAUSTELLE_DIALOG ist ja die Ressourcen-Id des Dialoges, die in der IDE eine Verknüpfung zum Res-File (grafische Dialogressource) darstellt. Die kannst Du nicht mit .DoModal zur Ansicht bringen. Du musst eine Instanz Deiner Dialogfeldklasse erzeugen und diese mit .DoModal() sichbar machen. Das IDD_BAUSTELLE_DIALOG nimmst Du nur zum Verknüpfen des Menübefehls zum Öffnen des Dialogs.



  • Ok und wie mache ich diese Verknüpfung?



  • addict schrieb:

    Ok und wie mache ich diese Verknüpfung?

    Weiß ja nicht, wie Du den Dialog aufrufen willst. Vielleicht habe ich das vorhin auch etwas missverständlich ausgedrückt. Die IDD_BAUSTELLLE... benötigt Deine Dialogfeldklasse, um eine Verknüpfung zur Ressource herstellen zu können. In der Headerdatei zur Dialogfeldklasse taucht die IDD_BAUSTELLE.... dann in der Form

    class CTestdialog : public CDialog
    {
    // Konstruktion
    public:
    	CTestdialog(CWnd* pParent = NULL);   // Standardkonstruktor
    
    // Dialogfelddaten
    	//{{AFX_DATA(CTestdialog)
    	enum { IDD = IDD_BAUSTELLE_...}; // Hier wird die Verknüpfung erstellt.
    	// HINWEIS: Der Klassen-Assistent fügt hier Datenelemente ein
    	//}}AFX_DATA
    
    // Überschreibungen
    	// Vom Klassen-Assistenten generierte virtuelle Funktionsüberschreibungen
    	//{{AFX_VIRTUAL(CTestdialog)
    	protected:
    	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
    	//}}AFX_VIRTUAL
    

    Wird das Fenster über einen Menüspunkt der Menüleiste aufgerufen dann brauchst Du in Deinem CMainFrame dann eine Funktion CMainFrame::OnFunktionsname() in der Du dann die Instanz Deiner Dialogfeldklasse erstellst und mit .DoModal() aufrufst.


Anmelden zum Antworten