Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

wie kann ich auf der weiße Fläche eines MDI-Dokluemnts Steuerelemente platzieren?!

Grund: Wenn ich eine Datei öffne, so soll die Dateianzeige mit Hilfe eines TreeViews erfolgen.

Im Ressourceneditor habe ich leider keine Möglichkeit gefunden, die "Dokumentenfläche" zu bearbeiten und Steuerelemente draufzulegen :confused:

Wer kann mir helfen?

Grüße,

Technician

P.S.: Ich bin im "Visual"-Teil von C++ noch totale Anfängerin ;)

Geschrieben

Mit dem Ressourceneditor kannst Du nur arbeiten, wenn Deine View-Klasse von CFormView abgeleitet ist, denn nur diese Klasse kann man mit Dialogressourcen verknüpfen. Allerdings ist der Hintergrund dann grau, nicht mehr weiß.

Ansonsten musst Du die Steuerelemente von Hand erzeugen, mittels CreateWindow.

Geschrieben
Original geschrieben von Klotzkopp

Mit dem Ressourceneditor kannst Du nur arbeiten, wenn Deine View-Klasse von CFormView abgeleitet ist, denn nur diese Klasse kann man mit Dialogressourcen verknüpfen. Allerdings ist der Hintergrund dann grau, nicht mehr weiß.

Ansonsten musst Du die Steuerelemente von Hand erzeugen, mittels CreateWindow.

okay, danke!

werd mir's mal anschauen!

grüße,

technician

Geschrieben

wenn ich jetzt in der headerdatei meiner view die zeile

class CMdiProgramView : public CView

durch

class CMdiProgramView : public CFormView

ersetze, bekomme ich den Compilerfehler

"error C2512: 'CFormView' : Kein geeigneter Standardkonstruktor verfuegbar"

und bleib dann in der CDMdiProgramView.cpp hier hängen:

CMdiPrigramView::CMdiProgramView()

{

// ZU ERLEDIGEN: Hier Code zur Konstruktion einfügen,

}

was muss ich da noch ändern, damit's funktioniert?

Geschrieben
Original geschrieben von Technician

was muss ich da noch ändern, damit's funktioniert?

Der Fehler kommt daher, dass CFormView im Konstruktor ein Argument braucht, und zwar die ResourceId der Dialogresource, mit der sie verknüpft ist.

Es ist ziemlich aufwändig, ein SDI/MDI-Projekt nachträglich auf eine andere View-Klasse umzustellen. Wenn es nicht zuviel Aufwand ist, würde ich von vorn beginnen. Du kannst beim Anlegen des Projekts mit dem Assistenten auf der letzten Seite die Basisklasse der View festlegen. Wenn Du da CFormView wählst, wird auch gleich eine Dialogressource angelegt, und die View damit verknüpft.

Falls das nicht geht, muss folgendes geändert werden:

In CDeineView.h

class CDeineView: public CFormView (logisch)

//{{AFX_DATA(CDeineView)

enum{ IDD = IDD_ZU_VERWENDENDE_DIALOGRESSOURCE };

// NOTE: the ClassWizard will add data members here

//}}AFX_DATA

In CDeineView.cpp:

IMPLEMENT_DYNCREATE(CDeineView, CFormView)

BEGIN_MESSAGE_MAP(CDeineView, CFormView)

Das gleiche für jeden Eintrag in der MessageMap: Überall muss CView durch CFormView ersetzt werden.

Der Konstruktor:

CDeineView::CDeineView() : CFormView(CDeineView::IDD)

{

//{{AFX_DATA_INIT(CDeineView)

// NOTE: the ClassWizard will add member initialization here

//}}AFX_DATA_INIT

// TODO: add construction code here

}

Außerdem muss bei jeder virtuellen Funktion, in der die Funktion der Basisklasse aufgerufen wird (z.B. DoDataExchange, PreCreateWindow, OnInitialUpdate) CView durch CFormView ersetzt werden.

Geschrieben

Hallo Klotzkopp,

Original geschrieben von Klotzkopp

Es ist ziemlich aufwändig, ein SDI/MDI-Projekt nachträglich auf eine andere View-Klasse umzustellen. Wenn es nicht zuviel Aufwand ist, würde ich von vorn beginnen. Du kannst beim Anlegen des Projekts mit dem Assistenten auf der letzten Seite die Basisklasse der View festlegen. Wenn Du da CFormView wählst, wird auch gleich eine Dialogressource angelegt, und die View damit verknüpft.

Das habe ich jetzt auch festgestelllt ;)

Da es ja nur ein kleines Übungsprojekt ist mit dem ich mich in die Thematik einarbeiten werde, leg ich dann mal ein neues an.

Jetzt ist mir das mit den FormViews klar :cool: - bis ich wieder ne Frage hab ;)

Wirst mich hier in dem Forum demnächst noch öfter finden :)

Grüße,

Technician

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...