Wizardpage1 m_strText eingabefeld --zu--> WizradPage2 m_strText anzeige...



  • Hi Leute!

    Wie ich Variablen eines Editfeldes m_strEdit1 in einen anderen Dialog übergebe, das weis ich.
    Ich stelle das mit CPropertyPage an.

    Möchte ich aber das gleiche system beim Wizarddialog verwenden, geht es nicht, also keine Fehler, aber wenn Programm läuft ein Error Abbrechen, Ignoieren oder Debuggen.

    Hat mir wer nen Vorschlag wie man es SONST noch machen könnte?
    CWizradPage1Dlg hat 1 Editfeld namens m_strName
    und dort wird egal was, einfach was eingebeen.

    In CWizardPAge2DLG hat es 1 Textdeld m_strText.
    Dort sollte dann, also auf der 2ten wizardseite, nACHDEM also beoim ersten eingebene wurde und auf next geklickt wurde, der GENAU eingegebene Text von der erstn seite jetzt auf dieser zweiten angezeigt werden. Ebenfalls sollte man mit dieser Variable über den ganzen Wizrad verwednen können.

    Wie mache ich das?

    Hier mal der Code, welcher ich momentan habe und mir jedesmal dieser FEHLER 13 ausgibt:

    In WizradPage1:

    class CWizardPage1 : public CPropertyPage
    {
    	DECLARE_DYNCREATE(CWizardPage1)
    
    // Construction
    public:
    	CWizardPage1();
    	~CWizardPage1();
    
    // Dialog Data
    	//{{AFX_DATA(CWizardPage1)
    	enum { IDD = IDD_DIALOG1 };
    	CEdit	m_strEdit2;
    	CEdit	m_strEdit1;
    	//}}AFX_DATA
    
    //....
    

    in WizardDlg2:

    // CWizardPage2 message handlers
    
    BOOL CWizardPage2::OnSetActive() 
    {
    	// TODO: Add your specialized code here and/or call the base class
    
    	CPropertySheet* psheet = (CPropertySheet*) GetParent(); 
    	psheet->SetWizardButtons(PSWIZB_NEXT|PSWIZB_BACK); 
    	return CPropertyPage::OnSetActive();
    }
    
    void CWizardPage2::OnShowWindow(BOOL bShow, UINT nStatus) 
    {
    	CPropertyPage::OnShowWindow(bShow, nStatus);
    
    	// TODO: Add your message handler code here
    	UpdateData(TRUE);
    	CString name;
    	CString vorname;
    	((CMyWizardSheet*)GetParent())->m_strEdit1.GetWindowText(name);
    	((CMyWizardSheet*)GetParent())->m_strEdit2.GetWindowText(vorname);
    	m_strTxt1.SetWindowText(name);
    	m_strTxt2.SetWindowText(vorname);
    }
    //.....
    

    **Und die CMYWizardSheet :

    /////////////////////////////////////////////////////////////////////////////
    // CMyWizardSheet
    
    class CMyWizardSheet : public CPropertySheet
    {
    	DECLARE_DYNAMIC(CMyWizardSheet)
    
    // Construction
    public:
    	CMyWizardSheet(UINT nIDCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
    	CMyWizardSheet(LPCTSTR pszCaption, CWnd* pParentWnd = NULL, UINT iSelectPage = 0);
    
    // Attributes
    public:
    
    // Operations
    public:
    
    // Overrides
    	// ClassWizard generated virtual function overrides
    	//{{AFX_VIRTUAL(CMyWizardSheet)
    	//}}AFX_VIRTUAL
    
    // Implementation
    public:
    	CEdit m_strEdit2;
    	CEdit m_strEdit1;
    	virtual ~CMyWizardSheet();
    
    	// Generated message map functions
    protected:
    	//{{AFX_MSG(CMyWizardSheet)
    		// NOTE - the ClassWizard will add and remove member functions here.
    	//}}AFX_MSG
    	DECLARE_MESSAGE_MAP()
    };
    //,....
    

    **CMyWizardSheet abhängig PropertySheet ist UNABHÄNGIG von der WizradKlasse. Meine Wizradklasse welche den Seiten 1,2 und 3 angehören heisst NUR CWizardSheet.
    mfg¨
    und Danke zum Voraus,
    Programmer 😉



  • und mir jedesmal dieser FEHLER 13 ausgibt

    wenn ich das nur kapieren würde, aber du solltest vielleicht sagen, wo genau der fehler ist/es abstürzt.



  • gri schrieb:

    und mir jedesmal dieser FEHLER 13 ausgibt

    wenn ich das nur kapieren würde, aber du solltest vielleicht sagen, wo genau der fehler ist/es abstürzt.

    also. Der Wizard startet, man gibt beim ersten Feld:

    Affe

    beim zweiten

    Leopard ein.

    Dann klickt man auf NEXT.
    und genau dort stürzt das Programm ab, denn dort sollte dann Affe und Leopard angezeigt werden. 🙂


Log in to reply