Formulare in anderes Projekt kopieren?
-
Hallo,
wie kann man Formulare im Visual-Studio von einem Projekt ins andere kopieren, aufrufen und wiederverwenden?
Geht das überhaupt?Gruss
Franky
-
Stichwort: "Resourcendateien".
Solltest du aber selbst drauf kommen.
-
Geht auch einfach per C&P, aber das bezieht sich nur auf die Dialogdaten, nicht eventuell vorhandene Funktionalität (also bereits gefüllte Eventhandler).
-
Steht IMHO auch in der FAQ.
Beide Projekte laden und dann einfach C&P
-
Hallo,
zunächst: Ich arbeite mit Visual Studio 6.0, vielleicht ist ja das bereits das Problem.
@Machine: Die Resourcedatei beinhaltet alle Formulare, aber wir kopiere ich ein einzelnes?
@_matze: Das C&P funktioniert bei mir nicht, d.h. ich kann zwar alle buttons, Edits usw. auf einem Formular kopieren und auf einem anderen einfügen, das ist aber nicht das was ich wollte.
@Unix-Tom:
Kannst du bitte mal den Artikel in der FAQ angeben, den du meinst? Ich habe mit mit den Stichwörtern "Forumlar, kopieren, Dialog" usw. nicht gefunden.
-
Franky1112 schrieb:
@Machine: Die Resourcedatei beinhaltet alle Formulare, aber wir kopiere ich ein einzelnes?
Indem du aus der Resourcendatei nicht _alle_ "Formulare" kopierst, sondern nur das, welches du brauchst?!
-
Meinst du wirklich die Datei oder den Reiter "Resourcen", in der Datei taucht das Formular bei mir nämlich gar nicht auf ?!?
-
Ah, jetzt, ja eine insel: Man sollte es nicht mit dem kopieren und einfügen aus dem Kontextmenue/Popup versuchen, über "Bearbeiten" tut's wie gewohnt mit c&p
-
Jetzt kann er den Dialog doch nicht erzeugen. Ich habe die Resource wie oben beschrieben kopiert, danach eine Dialog-Klasse mit allen Msg-Funktionen für alle Buttons angelegt. Läßt sich wunderbar alles übersetzen.
Dann kommt der Aufruf aus der MainApp (MDI-Projekt).
Ich habe folgende Varianten versucht:
1. Instanziierung des Dialogklasse als View-Member
2. Lokale Instanziierung direkt in der Msg-Funktion nach dem Beispiel das about-Dlg.
3. Instanziierung des Dialogklasse als App-MemberDann rufe ich die vererbte Methode DoModal() auf, hier springt er mit dem Debugger auch rein, allerdings ohne Erfolgreich den Dialog zu erzeugen.
Also irgendwas fehlt im noch.Daher nochmal die Bitte an euch um Rat oder den entsprechenden FAQ-Artikel
Besten Dank
-
Zeig doch mal die Dialog Klasse.. meine Kristallkugel ist grad zur Reinigung, weißte
-
Hallo,
so hier Aufruf, Konstruktor und Headerteil, ich hoffe das genügt.
void CSTestCenterView::OnExtrasFlashio() { CFlashCardDlg *FlashCardDlg; // Create and show the dialog box int nRet = -1; FlashCardDlg = new CFlashCardDlg(this); // FlashCardDlg.InitModalIndirect(); nRet = FlashCardDlg->DoModal(); ... }
Danach ist nRet = -1, was soviel heißt wie, "war wohl nix"
Das folgende hat der Wizard automatisch generiert.
(Wobei hier eine Erklärung, was der da eigentlich macht, gut wäre)CFlashCardDlg::CFlashCardDlg(CWnd* pParent /*=NULL*/) : CDialog(CFlashCardDlg::IDD) { //{{AFX_DATA_INIT(CFlashCardDlg) m_Text = _T(""); m_iBoardNumber = 0; m_iFileName = _T(""); m_iIndex = 0; m_uiSector = 0; m_iOffset = 0; m_uiHandle = 0; //}}AFX_DATA_INIT }
und entsprechend der Header.
class CFlashCardDlg : public CDialog { // Konstruktion public: CFlashCardDlg(CWnd* pParent=NULL); // Standardkonstruktor USHORT m_usTask; ULONG m_ulDataAddr; ULONG m_FileHandle; ... }
-
Kann denn keiner mal ne Schritt für Schritt Anleitung geben, wie man Dialoge von einem Projekt in das andere kopiert?
Ich habe heute morgen im Projekt selber einen Dialog erstellt, der läßt sich mit dem oben beschriebenen Methodenaufruf einwandfrei aufrufen, wieso funktioniert das nach dem Kopieren und Einfügen nicht (so)