Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331

    [C++ per palmari] modifica caption

    Salve a tutti in un'applicazione in C++ per palmari (sviluppata in Visual Studio 2005) vorrei poter cambiare la caption di alcuni ID_STATIC e ID_BUTTON creati sul Dialog.
    Gli STATIC sono stati creati usando il tool grafico del Visual e sempre tramite quel tool ne ho inizializzato la Caption.

    Per cambiare la Caption ho scritto il seguente codice:

    codice:
    CButton *btnCancel = (CButton *)GetDlgItem(IDC_BUTTON1);
    if (linguaSelected == ITALIANO) btnCancel->SetWindowTextW(L"Cancella");
    
    CStatic *label_VE_messages = (CStatic *)GetDlgItem(IDC_STATIC_1);
    if (linguaSelected == ITALIANO) label_VE_messages->SetWindowTextW(L"Messaggi Vending Machine"); 
    
    CStatic *label_user_messages = (CStatic *)GetDlgItem(IDC_STATIC);
     if (linguaSelected == ITALIANO) label_user_messages->SetWindowTextW(L"Messaggi utente");
    Ma, a parte che a volte si pianta quando lo faccio eseguire sul palmare con il Debug, quando riesce a partire non mi modifica l'etichetta del Button e quella del secondo STATIC.

    Qualche idea sul perche'?
    Grazie e Ciao
    Sandro

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sei sicuro che le if vengano eseguite ... ?
    Fai una prova eliminando temporaneamente le if ...

    Fra l'altro, la if puo' essere una sola ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331
    Si, si le if vengono eserguite dato che una delle STATIC viene modificata!
    Effettivamente si, la if puo' essere una sola, stavo solo facendo delle prove poi ottimizzero' il tutto!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... allora puo' essere il solito problema di refresh del form ...

    Dovresti eseguire una funzione come la

    Invalidate()

    non so se e' applicabile nel tuo caso ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331
    Originariamente inviato da oregon
    Invalidate()
    ...
    What's invalidate? Scusa ma per me sono tutte cose nuove......................

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Tutte cose nuove ? Non sei messo bene ...

    Comunque ... per ora stai lavorando con un form o con un dialog box?
    Il "contenitore" attuale di tutti i controlli di che classe e'? Una CDialog ?

    E il codice in cui cambi le caption, dove e' inserito?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    GetDlgItem restituisce un CWnd (e devi controllare che non sia null), SetWindowTextW e' un metodo di CWnd, ergo evita di convertire a classi derivate.

    Insomma prova così:

    codice:
    CWnd *btnCancel = this->GetDlgItem(IDC_BUTTON1);
    if (NULL != btnCancel){
    	if (ITALIANO == linguaSelected){
    		btnCancel->SetWindowTextW(L"Cancella");
    	}
    }
    Considera che se effettui queste chiamate prima che la costruizione da risorsa sia completa, allora è molto probabile che la GetDlgItem non riesca a trovare IDC_BUTTON1, in quanto non ancora costruito.

    p.s.
    nei confronti ti consiglio di mettere sempre le costanti a sinistra.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    331
    Originariamente inviato da MacApp
    GetDlgItem restituisce un CWnd (e devi controllare che non sia null), SetWindowTextW e' un metodo di CWnd, ergo evita di convertire a classi derivate.
    Questa soluzione sembra funzionare!
    Grazie mille!

    Ciao
    Sandro

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 © 2025 vBulletin Solutions, Inc. All rights reserved.