Dialogbox umwandeln von domodal in non-modal



  • gibt es auch in deiner Csystemanzeige klasse einen handler der ausgelösst wird? Ansonnsten wirste da ewig warten können.

    BEGIN_MESSAGE_MAP(Csystemanzeige, CDialog)
            ...
    	ON_BN_CLICKED(IDC_DeinesButton, &Csystemanzeige::OnBnClickedButton1)
    	...
    END_MESSAGE_MAP()
    
    void Csystemanzeige::OnBnClickedButton1()
    {
        if(RegDeleteKey(HKEY_CURRENT_USER,"test") == ERROR_SUCCESS)
            ::AfxMessageBox(_T("Schlüssel in der Registry gelöscht");
    }
    

    Das mal als Beispiel, und wie gesagt das kannste alles in der IDE machen und mußte net per hand schreiben (siehe mal früheren post von mir)

    Mal sehen ob dir das nützt



  • thx all
    thx extrem ---------------------------------------> CTecS

    nochmal, herumgepfuscht in meinem Projekt, irgendwie liefs nicht mehr.
    Neues Projekt erstellt, neue Knöpfe,neuer Dialog, neue Klasse.
    Das Ergebnis 🙂 🙂 🙂 🙂 🙂 Dialogfeld macht alles 🙂 🙂 🙂 🙂 🙂



  • ...letzte Frage zu dem Beitrag.

    ich habe in meiner Dialogbox ein Edit Control, mit der variable m_runter.
    An welcher Stelle eignet sich es gut, den Befehl zu setzen...

    m_runter = "0";
    UpdateData(FALSE);
    


  • Wenn es um die Initialisierung von m_runter beim Öffnen des Dialoges geht, dann in OnInitDialog()



  • thx,
    aller letzte Frage...
    im Hauptfester habe ich ein CEDITone mit einer variable m_text.

    Einer meiner knöpfe führt folgendes aus...

    m_text = "test";
    	UpdateData(FALSE);
    

    ... das geht wunderbar. 🙂

    Den gleiche Code setzte ich auf meine Dialogbox, die ich mit create aufrufe.Beim Compilieren...

    error C2065: 'm_text' : undeclared identifier
    

    Wie bekomme ich es fertig, dass ich eine Nachtricht ins CEDITone schreiben kann?



  • kann auch nicht funktionieren da m_text ein member deines Hauptdialoges is, und du aber in der klasse des childdialoges bist, also kennt der das da gar net. organisier die einen zugriff auf dein hauptfenster, gibts massen möglichkeiten, kannst ja mal googln



  • thx,
    hhmmmm, das ist mir schon klar, aber ich habe überhaupt keinen schimmer, wie das funken soll.

    Meine Idee.
    Im Dialogfeld greife ich auf classe zu, die sich im Hauptfenster befindet, und diese Klasse spuckt was in CEDIT

    Könntest du mir sagen,nachwas ich goole soll. 😃 (kein Witz)



  • Da wie ich gesehen habe du den this als parent im Create mit angegeben hast, brauchst du eingentlich nur noch die headerdatei deines hauptdialoges im cpp deiner childklasse einzufügen und kannst dann mit GetParent() zugreifen.

    #include "deineHauptklasse.h"
    
    static_cast<CDeineHauptklasse>(GetParent())->m_text = "dein Text";
    

    So sollte der ganze spass gehen denke ich mal, hab das jetzt so mal ausn kopf hingekritzelt.

    Aber wie gesagt du kannst dem dialog auch einen zeiger mitgeben und über diesen zu greifen.



  • ok,thx
    ist ganz oben in im Dialogfeld

    #include "GamexDlg.h" 
    #include "Gamex.h"
    

    in meinem Knopf....

    static_cast<CGamexDlg>(GetParent())->m_text = "dein Text";
    

    sowie...

    static_cast<CGamex>(GetParent())->m_text = "dein Text";
    

    geht nicht 😞

    Mein Compiler...
    [code]
    error C2061: syntax error : identifier 'CGamex'
    [cpp]

    1.Warum habe ich einmal eine Klasse mit Dlg und einmal nicht?
    2.wieso error?



  • zu 1.
    weil GamexDlg.h deine Dialog-Klasse is und Gamex.h deine Application-Klasse is, als von der App aus wird die gialog-klasse instanziert und dein Programm wird ind der appp mit initInstance gestartet

    zu 2.
    mal wieder geraten, heist deine App auch CGamex und besitzt die wirklich die membervariable m_text?



  • ok,nochmal geschaut.
    unter classview habe ich...
    GamexDlg
    GamexApp

    und der CString ist m_text,und ist im Hauptfenster.



  • also in der klasse CGamexDlg da muß das natürlich nach hinten los gehen wenn du

    static_cast<CGamex>(GetParent())->m_text = "dein Text";
    

    schreibst. Oder anders gesagt wenn dein bekannter im haus nr 15 wohnt kannste net im haus nr 17 klingeln und dich wundern das de den net fondest 😮

    also sollte doch jetzt alle fragen geklärt sein oder?



  • @tomycat2009: Wenn du so viele Schreibfehler beim coden wie bei deinen posts machst - dann wundert mich gar nix... :p


Anmelden zum Antworten