Controls und ihre Membervariablen



  • Ich wunder mich gerade etwas über Control-Membervariablen. Pro Control brauche ich etwa 2 Membervariablen: Ein m_staticText (z.B. zum Verschieben beim Fenstervergrössern) und ein m_stringText für die Beschriftung des Statics. Ist denn dieses m_stringText an das Control gebunden? Ich finde nirgends eine Zuweisung im Quelltext. Aber wenn ich m_stringText ändere und ein UpdateData(false) ausführe, wird die Beschriftung tatsächlich aktualisiert. Bei einem Slider und einem integer funktioniert das aber nicht, trotz UpdateData(false). Kann mich da mal jemand aufklären, wieso das so ist?



  • Halöle,
    ja, diese zwei von dir definierten Variablen sind an das Static Element gebunden.
    Die zuweisung findest du bei der Funktion DoDataExchange.

    void CMeinDlg::DoDataExchange(CDataExchange* pDX)
    {
    	CDialog::DoDataExchange(pDX);
    	//{{AFX_DATA_MAP(CKnsDlg)
    	DDX_Text(pDX, IDC_EDIT1, m_TextVariable);
    	//}}AFX_DATA_MAP
    }
    

    Ebenfalls kannst du auch nur mit der ControlVariable auskommen und den Text mittels SetWindowText zuweisen.



  • Ah, jetzt seh ichs. Beim Aufräumen habe ich die Variablen wohl ausversehen aus DoDataExchange gelöscht. Die oben genannten Strings aktualisieren jetzt auch nicht mehr. Danke für den Hinweis!

    EDIT: Bei VC++6 konnte ich noch Strings erstellen, jetzt bei VC2005 nur noch numerische Werte. Nanu?

    EDIT2: Hmmmm wenn ich über den DialogEditor eine int-Variable bei einem Static erstelle, fügt er gar nichts dem DoDataExchange hinzu...



  • Über das VC2005 kann ich leider nix sagen, da ich immer noch das VS6.0 nutze



  • JPSelter schrieb:

    EDIT: Bei VC++6 konnte ich noch Strings erstellen, jetzt bei VC2005 nur noch numerische Werte. Nanu?

    Schreib es mal selber hin. Guenni hat dir ja ne Vorlage gegeben.
    Manche Sachen sind im neuen VC einfach nur supergut versteckt - funktionieren aber genauso gut, wenn man es von Hand hinschreibt. 😃



  • So, wieder so ein Problem. Diesmal muss ich einen float Wert an ein Static binden. Automatisch macht er es malwieder nicht... ich glaube ich muss im DoDataExchange DDX_Float benutzen oder? Das findet er allerdings nicht... wie sieht die Bindung korrekt aus?


Anmelden zum Antworten