Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Dialogfeld aus anderem Dialogfeld öffnen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.11.2004, 11:07 Uhr
~ProfGambler
Gast


Hallo!

Ich habe folgendes Problem: Ich habe eine Dialogbasierte Win32 Anwendung (MFC, Visual C++ .NET).
Jetzt möchte ich ein zweites Dialogfeld öffnen um Einstellungen vorzunehmen. Das zweite Dialogfeld kann ich auch erstellen, öffne ich es allerdings mit DoModal ershceint es nicht als Eigenständiges Feld, sondern quasi im hintergrund meines "Hauptdialogs".

hat Irgendwer eine Idee?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.11.2004, 11:34 Uhr
~mike
Gast


Hi!
Was meinst du mit "Eigenständiges Feld" und "im hintergrund meines "Hauptdialogs""? Wenn du den Einstelldialog aus dem Hauptdialog heraus ausrufst, sollte der immer im Vordergrund sein.

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.11.2004, 11:39 Uhr
~Prof.Gambler
Gast


Nein, ich würde ja gerne nen Screenschot anhängen, aber das geht wohl nicht...

Ich habe ein Fenster. (Standard MFC-Dialog über Anwendungsassistenten --> Dialoganwendung erstellt). Darin gibt es 4 Buttons und 2 Edit-Text-Felder. Beim Click auf einen der Buttons soll ein neues Fenster mit weiteren Eingabemöglichkeiten erscheinen.
Ich habe also ein neues Dialogfeld mit zugehöriger Klasse erstellt und es mit "DoModal()" aufgerufen.

Folge: Ich bekam kein neues Fenster, sondern der Inhalt des neuen Fensters erschien im Hintergrund meines alten Fensters (ich hatte also quasi 2 Schichten Buttons im Selben Fenster) und das ganze Programm war nuroch über den Taskmanager beendbar.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.11.2004, 12:54 Uhr
~mike
Gast


Hi!
Poste mal den Code. Kann ich mir nicht vorstellen

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
17.11.2004, 13:13 Uhr
~Prof.Gambler
Gast


Ich hab was rausgefunden:

Erstelle ich den neuen Dialog über rechtsklick-> Rssource hinzufügen und wähle dann eine Ressource aus, endet das Spiel wie oben beschrieben.

Erstelle ich den Dialog über Rechtsklick auf den ordner für die Dialogressourcen und dann Dialog einfügen funktioniert alles wie es sollte.

Was auch immer der Unterschied ist, für den Moment reicht mir der Workarraound. Der Quelltext der zueghörigen header und CPP Dateien weist natürlich Unterschiede auf, aber ich bin nicht so fit in dieser Window-oberflächengeshcichte, als das ich das analysieren könnte.

Meine Neugier ist jetzt nurnoch von akademischem Interesse, falls es aber noch jemanden ernsthaft interessiert poste ich unten die Quellcodes

Dabei ist settings, die nicht richtig funktionierende und test die richtig funktionierende Version! Die in den Listings erscheinende Lara.h ist der Header des Hauptfensters.

Auf jeden Fall mal danke für den Hilfeversuch, ich mahc das ganze jetzt über den "Workarround" (ohne wirklich zu vertsehen wieso)!


settings.h

C++:
#pragma once


// Settings-Dialogfeld

class Settings : public CDialog
{
    DECLARE_DYNAMIC(Settings)

public:
    Settings(CWnd* pParent = NULL);   // Standardkonstruktor
    virtual ~Settings();

// Dialogfelddaten
    enum { IDD = IDD_Settings_Dialog };

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung

    DECLARE_MESSAGE_MAP()
public:
    CString m_load_correction_file1;
};




settings.cpp

C++:
// Settings.cpp : Implementierungsdatei
//

#include "stdafx.h"
#include "Lara.h"
#include "Settings.h"


// Settings-Dialogfeld

IMPLEMENT_DYNAMIC(Settings, CDialog)
Settings::Settings(CWnd* pParent /*=NULL*/)
    : CDialog(Settings::IDD, pParent)
    , m_load_correction_file1(_T(""))
{
}

Settings::~Settings()
{
}

void Settings::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    DDX_Text(pDX, IDC_EDIT_Durchsuchen_load_correction_file1, m_load_correction_file1);
}


BEGIN_MESSAGE_MAP(Settings, CDialog)

END_MESSAGE_MAP()


// Settings-Meldungshandler



test.h

C++:
#pragma once


// cTest-Dialogfeld

class cTest : public CDHtmlDialog
{
    DECLARE_DYNCREATE(cTest)

public:
    cTest(CWnd* pParent = NULL);   // Standardkonstruktor
    virtual ~cTest();
// Überschreibungen
    HRESULT OnButtonOK(IHTMLElement *pElement);
    HRESULT OnButtonCancel(IHTMLElement *pElement);

// Dialogfelddaten
    enum { IDD = IDD_DIALOG1, IDH = IDR_HTML_TEST };

protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
    virtual BOOL OnInitDialog();

    DECLARE_MESSAGE_MAP()
    DECLARE_DHTML_EVENT_MAP()
};



Test.cpp

C++:
// Test.cpp : Implementierungsdatei
//

#include "stdafx.h"
#include "Lara.h"
#include "Test.h"


// cTest-Dialogfeld

IMPLEMENT_DYNCREATE(cTest, CDHtmlDialog)

cTest::cTest(CWnd* pParent /*=NULL*/)
    : CDHtmlDialog(cTest::IDD, cTest::IDH, pParent)
{
}

cTest::~cTest()
{
}

void cTest::DoDataExchange(CDataExchange* pDX)
{
    CDHtmlDialog::DoDataExchange(pDX);
}

BOOL cTest::OnInitDialog()
{
    CDHtmlDialog::OnInitDialog();
    return TRUE;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
}

BEGIN_MESSAGE_MAP(cTest, CDHtmlDialog)
END_MESSAGE_MAP()

BEGIN_DHTML_EVENT_MAP(cTest)
    DHTML_EVENT_ONCLICK(_T("ButtonOK"), OnButtonOK)
    DHTML_EVENT_ONCLICK(_T("ButtonCancel"), OnButtonCancel)
END_DHTML_EVENT_MAP()



// cTest-Meldungshandler

HRESULT cTest::OnButtonOK(IHTMLElement* /*pElement*/)
{
    OnOK();
    return S_OK;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
}

HRESULT cTest::OnButtonCancel(IHTMLElement* /*pElement*/)
{
    OnCancel();
    return S_OK;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: