*.ini -> Wert in Textfeld ausgeben, geht nicht :(



  • Mahlzeit leuts!

    hab folgendes Problem:
    ich hol mir aus meiner config.ini meine Einstellungen für mein Programm. Unter anderem einen Pfad, den ich in einem Textfeld ausgeben will.
    Die Einstellungen für die Checkboxen "m_cSave" und "m_cShow" übernimmt er mir die Werte (TRUE oder FALSE) richtig. Im Debugger kann ich feststellen, dass er mir den richtigen Pfad ausliest und die Variable m_strFilePath auch den richtigen Wert bekommt. Allerdings zeigt er mir im Textfeld dann eben nix an und das Textfeld bleibt leer 😞

    //show    --   save ganz analog
    	char *pBuf2 = new char[300]; 
        GetPrivateProfileString("allgemein","show","1",pBuf2,300,m_exePfad+"config.ini"); 
        wertstr.Format("%s",pBuf2); 
        delete []pBuf2; 
    	dlg_Config.m_cShow = atoi(wertstr);
    
    	//pfad
    	char Buf3[300]; 
        GetPrivateProfileString("allgemein","pfad", m_exePfad, Buf3, 300, m_exePfad+"config.ini"); 
        wertstr.Format("%s",Buf3); 
    	dlg_Config.m_strFilePath = wertstr;
    	//so schmiert	    CWnd* pWnd = GetDlgItem(IDC_FILEPATH);
    	//er mir ab	    pWnd->SetWindowText(_T(wertstr));
    

    hab keine Ahnung was ich machen muss 😞

    Ich bitte um Hilfe und bedanke mich im Voraus



  • Ist dlg_Config zufällig ein anderer/neuer (Konfigurations-) Dialog und ist m_strFilePath eine Membervariable von diesem anderer/neuer (Konfigurations-) Dialog und hat dieser anderer/neuer (Konfigurations-) Dialog eine eigene OnInitDialog() ?



  • so ist es (falls ich mich mit der aussage jetzt zum affen mach, ich arbeite erst seit 2 wochen mit c++/mfc)

    muss fast über die Funktion

    void CProtokollierungDlg::OnConfig()
    

    machen, weil er mir sonst bei klick auf abbrechen, die falschen werte übernimmt und beim erneuten aufrufen anzeigt (warum auch immer)



  • Öhm, den zweiten Teil habe ich jetzt nicht ganz kapiert, aber wenn du deinen Kram in einem neuen Dialog anzeigen lässt geht das hier nicht an dieser Stelle wo du es hattest:
    CWnd* pWnd = GetDlgItem(IDC_FILEPATH);
    pWnd->SetWindowText(_T(wertstr));
    weil es da das Edit-Feld noch gar nicht gibt. Vielleicht funktioniert ja ein
    GetDlgItem(IDC_FILEPATH)->SetWindowText(m_strFilePath);
    am Ende von OnInitDialog() (vor return TRUE;) von deinem anderern/neuen (Konfigurations-) Dialog.



  • denk dir nix, weis selber nicht mehr was ich da eigentlich gemeint hab und verstehs auch selber nicht mehr 🙄

    GetDlgItem(IDC_FILEPATH)->SetWindowText(m_strFilePath);
    

    geht leider nicht

    *EDIT*

    geht doch, hatte UpdateData vergessen!

    Danke isabeau!! 👍 🙂



  • Geht leider nicht statt

    CWnd* pWnd = GetDlgItem(IDC_FILEPATH);
    pWnd->SetWindowText(_T(wertstr));

    an der Stelle wo er vorher abgeschmiert ist

    oder

    geht leider nicht am Ende von OnInitDialog() vom anderen Dialog ?

    [edit] OK, zu spät das editierte gesehen. Dann ist ja alle gut... [/edit]

    [edit2] Mmmmmhhhh, merkwürdig, UpdateData(...) dürfte doch eigentlich gar keinen Zusammenhang mit der neuen Zeile haben... *kopfkratz* 😕 [/edit2]

    [edit3]...ausser vielleicht, wenn m_strFilePath keine Membervariable vom Dialog selbst ist, sondern ein Member von dem Edit-Feld... [/edit3]



  • und genau das ist sie 🙂

    grüßle


Anmelden zum Antworten