Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [vc++]

    Ciao, ho un piccolo(grande) problema con vc++.


    A runtime leggo i lavori di un file di testo e mi popolo un CStringArray con i valori del file di testo. Fin qui tutto ok.

    Ho una CComboBox che voglio popolare con i valori di un CStringArray a run-time.

    Non trovo il metodo di CComboBox per aggiungere dei nuovi valori.


    Spero di essermi spiegato abbastanza bene!

    Ciao!

  2. #2
    Scusa e questo non va bene?
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    uffi, non mi va...
    mi dice dubug assertion faild.

    Io ho usato il wizard per la creazione della variabile di controllo, ma poi ogni volta che uso nel codice questa variabile di controllo mi esce sempre debug assertion faild!

    Nessuno sa dirmi dove sbaglio?

    Ciao

  4. #4
    Guarda se ti da un debug assertion failed sicuramente ti indica anche in maniera precisa il file e la riga di esso a cui si è verificata quindi è suficiente che tu faccaia una ricerca di tale file nella cartella di Visual studio,lo apra,vada alla riga incriminata e controlli a cosa è dovuta.Generalmente avvengono quando si usano dei metodi grafici di controlli per cui è stato creato l'oggetto ma non è ancor stata creata la finestra corrispondente.Prova a vedere..
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    sì, efettivamente mi da file riga, verificherò!

  6. #6
    ecco l'asserzione incriminata, ma che vuol dire?

    AFXWIN_INLINE int CComboBox::AddString(LPCTSTR lpszString)
    { ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, CB_ADDSTRING, 0, (LPARAM)lpszString); }

    che devo fare per non farla fallire?

  7. #7
    E' prprio come ti ho già detto,stai chiamando un metodo di un controllo in un momento in cui la sua finestra non è ancora stata disegnata.Ad esempio se il ComBo appartiene ad un CDialog gli stai aggiungendo stringhe prima di richiamare DoModal().Cmq o mi posti più codice o non ti posso aiutare
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  8. #8
    effettivamente io cerco di farla aggiungere nella initBox() che richiamo prima della doModal().

    Come posso fare ad aggiungerlo dopo aver chiamato la DoModal()?

    Quelle che mi viene in mente è fare l'override della funzione DoModal, richiamare quella di CDialog e poi aggiungere l'istruzione per aggiungere le opzioni alla CComboBox.
    Solo che nn mi ricordo più cm si fa!! è una cazzata o potrebbe essere la strada?

    Il codice se possibile preferirei nn postarlo eprchè è una mezza porcheria, fatta anni fa e che adesso sto riprendendo in mano!

  9. #9
    Originariamente inviato da teuccio
    effettivamente io cerco di farla aggiungere nella initBox() che richiamo prima della doModal().

    Come posso fare ad aggiungerlo dopo aver chiamato la DoModal()?

    Quelle che mi viene in mente è fare l'override della funzione DoModal, richiamare quella di CDialog e poi aggiungere l'istruzione per aggiungere le opzioni alla CComboBox.
    Solo che nn mi ricordo più cm si fa!! è una cazzata o potrebbe essere la strada?

    Il codice se possibile preferirei nn postarlo eprchè è una mezza porcheria, fatta anni fa e che adesso sto riprendendo in mano!
    Ci sono due possibilità:
    1)Utilizzare le routines DDX di MFC appositamente create per risolvere questo tipo di problemi.In sostanza devi associare una variabile membro del dialogo al valore del controllo e poi richiamare UpdateData().

    2)Ti dichiari nel dialogo un array di stringhe publico (o che puoi scrivere dall'esterno mediante apposito metodo) e nella initBox le stringhe le aggiungi a quello invece che direttamente al controllo,poi nella classe dialogo all'innterno di OnInitDialog vai a recuperare i valori memorizzati in quell'array e ci riempi il ComboBox.

    Io userei la seconda.Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  10. #10
    ecco come facevo!!!
    usavo anche io la onInitDialog,
    ma nella classe che ho creato (credo) attraverso il wizard non c'è la funzione onInitDialog.

    Cosa posso fare? la creo io manualmente? e poi cm gli dico che deve partire finito di disegnare la finestra?


    Oh, grazie mille per l'aiuto che mi stai dando.
    Purtroppo ho usato vc++ solo per 1 progetto e a distanza di 2 anni mi ricordo ben poco!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.