Nicht modaler Dialog



  • Hallo Leute, ich habe ein Problem beim erzeugen eines nicht modalen Dialoges.
    Anstatt das der Dialog angezeigt wird, wird nur das aufrufende Programm in den Hintergrund geschoben, es erscheint aber kein Dialog. Das Bsp. habe ich in einem Buch für MS Visual 5.0 gefunden benutze aber 6.0, ich dachte das sollte trotzdem funktionieren.

    Um den Dialog zu erzeugen bin ich wie folgt vorgegangen:
    Ich habe ein Neues Projekt (MyProjekt) angelegt und dem Projekt einen Dialog hinzugefügt (MyDialog) ein View war schon vorhanden (MyView).

    Im Dialog habe ich eine Membervariable eingefügt, einen neuen Konstruktor und eine neue Create Funktion:

    private:
        CView* m_pView;
    public:
        MyDialog(CView *pView) //neuer Konstruktor
        BOOL Create();
    

    In der cpp-Datei habe ich dann den neuen Konstruktor wie folgt realisiert:

    MyDialog::MyDialog(CView *pView)
    {
        m_pView ? pView;
    }
    

    Die Create Funktion lautet:

    BOOL MyDialog::Create()
    {
        return CDialog::Create(MyDialog::IDD);
    }
    

    (Ich habe jetzt mal das ganze mit den Messages für die OnOK und OnCancel weggelassen, das sollte nicht das Problem sein)

    In der View habe ich folgende Code eingefügt:
    MyView.h:

    private:
        MyDialog m_pDlg;
    

    MyView.cpp:

    MyView::MyView()
    {
        m_pDlg = new MyDialog(this);
    }
    
    MyView::~MyView()
    {
        delete m_pDlg;
    }
    
    void MyView::OnLButtonDown(UINT nFlags, CPoint point)
    {
        if (m_pDlg->GetSafeHwnd() == 0)
            m_pDlg->Create();
    }
    
    void MyView::OnRButtonDown(UINT nFlags, CPoint point)
    {
        m_pDlg->DestroyWindow();
    }
    

    Wie gesagt ich habe das Problem vereinfacht weil ich denke das Problem muss irgendwo in diesen Zeilen code liegen. Es wird kompiliert und läuft ohne Fehlermeldung, aber der Dialog erscheint nicht, nur das Fenster "wander nach hinten".
    Ich bin für jeden Tipp dankbar!



  • ShowWindow(SW_SHOW);


Anmelden zum Antworten