2016-06-07 4 views
0

ich mehr Einsatz bin als MFC Qt, aber ich habe folgendes Anliegen:Verwendung 1 einzigartige MFC Dialog für mehrere verschiedene Objekte der gleichen Klasse

I wurde ein Panel mit 4 Tasten zu schaffen, die alle diese Tasten haben die gleicher Zweck, wenn Sie darauf klicken, öffnet sich ein weiterer Dialog.

Dieser Dialog hat das exakt gleiche Layout für die 4 Tasten.

Da jedoch ein Dialog über die enum {IDD = ...} mit einer Klasse verbunden ist, habe ich mich gefragt, ob es tatsächlich möglich ist, dieselbe Dialogvorlage für mehr als ein Objekt zu verwenden oder wenn ich tatsächlich erstellen müsste 4 Dialoge machen im Grunde dasselbe mit einer anderen ID?

Antwort

1

Die ID-Ressource in der Anweisung enum { IDD = <resource ID> }; definiert eine Kompilierung Zeitkonstante, die den CDialog -c'tor geben wird (standardmäßig 1)) die nativen Steuerelemente aus einem Dialogvorlagenressource zu konstruieren. Dies wird dann an eine der Dialogerstellungsfunktionen (CreateDialog, etc.) übergeben, um das schwere Heben durchzuführen.

Es gibt keine Einschränkungen bei der Verwendung der Dialogvorlage für mehrere CDialog-abgeleitete Klassen.


1) Sie können die Dialogvorlagenressource ID direkt an die CDialog -c'tor in Ihrer benutzerdefinierten Klasse Implementierung passieren, und müssen nicht den Standardwert aufgezählt verwenden IDD.

+0

Ich behandelte es nicht als Ressource und Ihre Erklärung machte die Dinge klarer – trexgris

+0

@Ajay: Das 'enum' ist nur Ihr durchschnittlicher Aufzählungswert (Ich habe keine Ahnung, was Sie mit *" nicht erstklassig C++ "meinen *; es gibt nichts besonders spektakuläres daran). Wenn mehrere Klassen ein Mitglied mit demselben Namen definieren, ist dies kein Verstoß gegen die Regel für die Einzeldefinition. Die Mitglieder sind auf ihre umschließende Klasse beschränkt. Mit anderen Worten: Jede CDialog-abgeleitete Klasse kann ein Klassenmitglied namens IDD haben (und das seit Jahrzehnten). Unabhängig davon kann eine beliebige Anzahl von Dialogimplementierungen dieselbe Dialogvorlagenressource verwenden. – IInspectable

Verwandte Themen