Secondo me è un problema intrinseco di Visual Studio, che nella finestra di modifica dei dialog non dà ai controlli l'ID che gli assegni. Non puoi accontentarti del fatto che funzioni a runtime?
Secondo me è un problema intrinseco di Visual Studio, che nella finestra di modifica dei dialog non dà ai controlli l'ID che gli assegni. Non puoi accontentarti del fatto che funzioni a runtime?
Amaro C++, il gusto pieno dell'undefined behavior.
c'è una cosa che non ti ho detto , funziona solo se creo una variabile di istanza del controllo activex altrimenti nisba.
è normale?
grazie mille comunque sto per tirare i remi in barca e cercare di accontentarmi ma vorrei fare un altro piccolo sforzo.
Quindi secondo te a designe time è impossibile e non vale la pena di provarci.
altri modi?
l'override di id o il getproperty dell' ole?
e agganciarsi ad un cambiamento di property come si puo' fare per l'id , non esiste un dannato onpropertychanged(..,object newvalue)?
grazie.
un ultima cosa , Mitaly,per il test del dialogo(se funzionasse quello sarei piu' che soddisfatto del mio lavoro) mi serve agganciarmi ad una stock property come puo' essere ad esempio la caption ,penso si dovrebbe fare nel metodo get,ma non c'è alcun metodo get nelle stock properties.
grazie di tutto.
ciao
Be', certo... se non c'è un'istanza del controllo non c'è nemmeno il controlloOriginariamente inviato da giuseppe500
c'è una cosa che non ti ho detto , funziona solo se creo una variabile di istanza del controllo activex altrimenti nisba.
è normale?, nel senso, non viene neanche visualizzato.
Amaro C++, il gusto pieno dell'undefined behavior.
ho pensato ,dato che non ci sono i risultati sperati nel design time di utilizzare un dialog ereditato che all'oninit cicla i controlli,ne prende l'id e setta il testo con l'id caricando la stringa da stringtable.
percio' non utilizzero' piu' activex,bensi' i normali controlli mfc della toolbar.
L'unica cosa è che posso ereditare il mio dialog da cdialog,solo che non so cosa andare a mettere nel file .rc per dirgli che quel dialog non è piu' un dialog normale ma è il mio dialog ereditato.
Ma i normali controlli che sono nella tool box sono mfc?cbutton,cedit ecc?
posso ereditarli e andarli ad inserire nella toolbox?
grazie infinite.
funziona anche premendo il pulsante di preview del dialog!
adesso devo assolutamente trovare una funzione che cicla i controlli in un dialog ,non un dialog personalizzato,In pratica dovrei trovare il dialog dal controllo(che ho) e ciclare tutti i controlli in quel dialog.
Devo partire pero' da un controllo non da un dialog , cosi' non devo derivare.
mi dai l'ultimo aiuto?
grazie
per intenderci , ho creato questo codice:
CWnd* pWndCtl = GetNextDlgGroupItem( (CWnd*) NULL );
CWnd* pFirstCtl = pWndCtl;
do {
HWND hwnd = pWndCtl->GetSafeHwnd();
POSITION pos;
pWndCtl = GetNextDlgTabItem(pWndCtl,0);
pWndCtl->GetFocus();
pWndCtl->GetDlgItemText(pWndCtl->GetDlgCtrlID(),result);
AfxMessageBox(result);
} while (pWndCtl && (pWndCtl != pFirstCtl));
ma non funziona,almeno funziona il primo ciclo e basta , il problema sta nel tab , esiste un next generico al controllo successivo?
gtrazie.
ho cambiato in base ad una nuova idea :
inserisco nel form completato un piccolo activex button, e lancio il test del dialog.Premendo quel pulsante scorro tutti i controlli nel form e visualizzo a video il nome di ognuno.
che funziona a runtime ma non nel controllo , nel controllo visualizza solo il primo!
questo è il codice:
pardon questo:
CString str;
CWnd* c;
CWnd* cControl;
CString result;
CWnd* pWndCtl = GetNextDlgTabItem( (CWnd*) NULL );
CWnd* pFirstCtl = pWndCtl;
do {
HWND hwnd = pWndCtl->GetSafeHwnd();
pWndCtl->GetFocus();
GetDlgItemText(pWndCtl->GetDlgCtrlID(),result);
AfxMessageBox(result);
pWndCtl = GetNextDlgTabItem(pWndCtl,0);
} while (pWndCtl && (pWndCtl != pFirstCtl));
che a runtime funziona , nel test del form no
forse devo trovare il dialog parent del controllo?
laltra parte dell' idea è che questo piccolo activex si occupa nache di iserire stringhe nello string table dove non ci sono , dove l'id nel resource.h è un int che punta alla stringa della stringtable e che posso caricare con loadstring ,dopo aver compilato le risorse.
grazie
A parte il fatto che del problema con risorse, LoadString e altro ancora ne hai già parlato spesso in tantissime altre discussioni, che per il momento tralascio, non puoi continuare a risollevare la discussione con un monologo. Se hai delle prove da fare, falle, e se incontri una difficoltà e poni un problema, attendi risposte, o riunisci in un unico messaggio tutte le prove effettuate, senza risollevare di continuo la discussione.
Qui siamo in un forum, non in un blog.![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...