Zugriff auf Controls in SDI-App



  • Moin Gemeinde,

    habe eine SDI-App( Doc-View ) erstellt. Nun folgendes Problem: Ich brauche im Hauptfenster einige Controls, ein CListCtrl und 2 Edits. Soweit so gut. Habe dazu einen Dialog erstellt, Rand: Keine, Stil: untergeordnet und eigebunden:

    BOOL CMyApp::InitInstance()
    {
    ...
    	CSingleDocTemplate* pDocTemplate;
    	pDocTemplate = new CSingleDocTemplate(
    		IDR_MAINFRAME,
    		RUNTIME_CLASS(CTMXEditorDoc),
    		RUNTIME_CLASS(CMainFrame),       // Haupt-SDI-Rahmenfenster
    		RUNTIME_CLASS(CMyOwnForm));  <= darum gehts
    	AddDocTemplate(pDocTemplate);
    ...
    

    Funktioniert soweit, die Controls können vergrössert / verkleinert werden, je nach Bedarf.
    Nur wenn ich jetzt darauf zugreifen will, passiert entweder gar nichts( Text -> Edit mit ::SetDlgItemText(this->m_hWnd, IDC_EDIT1, _T("EditFeld1") ); ) oder beim Zugriff( z. B. InsertItem ) auf das ListCtrl -> Exception 😮
    Allerdings lassen sich in der OnSize, nach SicherheitsCheck( if( m_myGrid ) ) zumindest Columns anlegen. das wars dann aber auch schon mit der Herrlichkeit.

    Zieht er die Controls bei der Erstellung des 'Dialogs' nicht automatisch mit hoch?

    Wo liegt der Fehler?

    Für Hilfe schonmal ein Danke

    grüssle 🙂


  • Mod

    Von wo greifst Du wie auf die Controls zu?
    Angezeigt werden Dir doch die Controls.
    Wenn nicht hast Du das falsche Dialog template verändert.

    Innerhalb der CMyOwnForm Klasse müsstest Du auch Member Variablen zu den Controls anlegen können.



  • Angezeigt werden die Controls, nur kann ich nix damit machen. Soll heissen, wenn ich in das ListCtrl klicke, passiert nichts( habe jetzt mal testweise in der OnSize ein paar Einträge erstellt ).

    Membervariablen habe ich auch, über den Klassenassi angelegt.

    Was ich erreichen will, ist eine Datei zu öffnen und den Inhalt zeilenweise in das ListCtrl einfügen.

    Offensichtlich sind die Controls - ausser z. B. beim Vergössern/verkleinern des Fensters - deaktiviert 😮

    Hab wohl was übersehen? Aber was?

    grüssle 🙂



  • Hab jetzt noch mal etwas rumprobiert, folgendes:

    in die Editfelder kann ich Text eingeben, allerdings nicht per Code setzen lassen. Wenn ich aus meiner Funktion mit

    ::SetDlgItemText(this->m_hWnd, IDC_EDIT1, _T("EditFeld1") );
    

    Text ins Edit setzten will, knallts 👎

    Müssen die Controls neu( also mit >new< ) nochmals erstellt werden? wenn ja, wo? Im Konstruktor nicht, das hab ich getestet.

    grüssle 🙂



  • Deckel drauf - hab keinen Bock mehr.

    Habe die Anwendung neu erstellt, diesmal Dialogfeldbasiert, und jetzt läuft es so, wie es soll.

    grüssle 🙂



  • Smitty schrieb:

    Deckel drauf - hab keinen Bock mehr.

    Habe die Anwendung neu erstellt, diesmal Dialogfeldbasiert, und jetzt läuft es so, wie es soll.

    grüssle 🙂

    Wenn du bei einer SDI CFormView als Basisklasse für den View nimmst, sollte das genauso einfach sein. 😕



  • estartu schrieb:

    Smitty schrieb:

    Deckel drauf - hab keinen Bock mehr.

    Habe die Anwendung neu erstellt, diesmal Dialogfeldbasiert, und jetzt läuft es so, wie es soll.

    grüssle 🙂

    Wenn du bei einer SDI CFormView als Basisklasse für den View nimmst, sollte das genauso einfach sein. 😕

    Sorry, eben erst wieder drüber gestolpert.

    Das oben beschriebene ist eine CFormView!
    Die Frage bleibt, wie funktioniert die Kommunikation zwischen den Klassen? z. B. Wenn ich im HauptMenue etwas auswähle, soll als direkte Aktion darauf ein bestimmter Text in eines der Editfelder geschrieben werden.
    Habe momentan leider nicht die nötige Zeit - und Ruhe - mich da mal gründlich drüber her zu machen.
    Deshalb auch Thx für Tipps oder sonstige Hilfe.

    grüssle 🙂


Anmelden zum Antworten