Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
Lo chassis in Ceraluminium è il cuore di questo notebook in edizione 2026, un modello pensato per garantire produttività con le tipiche applicazioni di produttività personale e capace di offrire un'autonomia di funzionamento lontano dalla presa di corrente da riferimento. Potenza, facilità di trasporto e costruzione robusta tutto in un notebook compatto.
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare
MSI PRO MAX 341QPXW14G è un monitor ultrawide da 34 pollici che porta la tecnologia QD-OLED di quinta generazione in un contesto principalmente orientato alla produttività. La qualità dell'immagine è elevatissima, il formato 21:9 è ideale per il multitasking e la dotazione di porte trasforma il monitor in un vero hub per Mac, PC e dispositivi mobili. Il limite principale è invece il refresh rate di soli 144 Hz, che lo allontana dai giocatori competitivi più esigenti
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-08-2008, 17:36   #1
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
[c++] api aggiornare testo

Ciao,

sto lavorando in c++ con le api. Premetto che sto lavorando con i file .rc per la grafica (in quanto non conosco gli altri comandi che si inseriscono direttamente nel codice sorgente).
Volevo sapere se potete dirmi come aggiornare del testo in una dialogbox.
Infatti ho creato una libreria che copia una directory e vorrei che visualizzasse una dialogbox con scritto qualcosa del tipo

Avanzamento:

numero file copiati/numero file totali

grazie ciao
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2008, 19:19   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ottieni l'HWND a partire dall'id della risorsa con GetDlgItem e poi usi l'api SetWindowText.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2008, 21:29   #3
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da cionci Guarda i messaggi
Ottieni l'HWND a partire dall'id della risorsa con GetDlgItem e poi usi l'api SetWindowText.
esiste SetDlgItemText
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2008, 22:29   #4
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
riguardo la seconda opzione proposta è giusto usarla in questo modo?
SetDlgItemText(hWnd, IDC_LTEXT_PROGRESS, "pippo");
perchè il compilatore dice

E:\Documents and Settings\Matteo\Documenti\C++\nonno\Copia immagini\copymydir.h|109|error: `hWnd' was not declared in this scope|
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 00:10   #5
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Hai semplicemente usato un nome sbagliato di variabile che non è definita nella funzione che usi.
Assicurati che la variabile hWnd sia esattamente quella che indica la finestra in questione (e, ovviamente, che sia dichiarata e correttamente inizializzata ).
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 07:50   #6
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Hai ragione ma come faccio se voglio utilizzare questa funzine al di fuori "del ciclo" (non mi viene la parola) del mio dialogo? cioè esiste un funzione che "imposta" l'handle?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 09:47   #7
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Se usi quella chiamata dall'interno della funzione di callback che gestisce la finestra di dialogo, allora puoi recuperare quel valore dai parametri della funzione (è il primo parametro passato alla funzione, se non ricordo male).

Altrimenti se devi ricordarlo dopo la creazione della finestra devi salvare quel valore da qualche parte, magari passandolo tra i parametri delle funzioni che ne hanno bisogno se proprio è necessario.

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 10:19   #8
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
il problema è che io devo richiamare una funzione senza mai passare dalla DialogProcedure, ti spiego guarda questo codice:
Codice:
void copymydir(char *percorso, char *percorso2, BOOL &result, BOOL &delall)
{
  DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG3), NULL, AboutDlgProc);


//qui c'è altro codice....


  copyallfile(result);//questa è la funzione alla quale devo passare l'handle

}
il punto è (come posso dire,) che siccome la funzione non viene richiamata dalla Dialog Procedure, non so come poter passare l'handle a copyallfile.
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 12:00   #9
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Allora, innanzitutto dovresti controllare che la finestra di dialogo sia stata creata correttamente:
Codice:
if (DialogBox(/* ...parametri... */) == IDOK)
{
    /* copia tutti i file */
}
else
{
    /* stampa un messaggio di errore */
}
Comunque, hai una procedura di callback impostata:
Codice:
DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG3), NULL, (DLGPROC)AboutDlgProc);
Quindi il primo parametro di AboutDlgProc() è l'handle della finestra di dialogo appena creata: se il tuo interesse è solo impostare del testo, lo puoi fare mentre la finestra viene creata gestendo quel messaggio con la tua funzione di callback e lasciando il resto dei messaggi al gestore di default:
Codice:
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
        case WM_INITDIALOG:
            /* fai quello che devi fare */
            break;
    }
    return FALSE;
}
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!

Ultima modifica di DanieleC88 : 21-08-2008 alle 12:06.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 13:45   #10
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
in realtà io vorrei creare una finestra che aggiorni continuamente il testo, e siccome la funzione che riguarda la copia dei file è al di fuori della Dialog Procedure, avrei bisogno se possibile di richiamare SetDlgItemText da un'altra funzione ma non riesco... comunque adesso cerco una soluzione alternativa "spostando le funzioni", voi intanto ripondete...
ciao e grazie
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 13:52   #11
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
esite una funzione che ricavi l'handle di una dialog box pertendo dal suo ID???
così dovremmo essere a cavallo...
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 14:03   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
in realtà io vorrei creare una finestra che aggiorni continuamente il testo, e siccome la funzione che riguarda la copia dei file è al di fuori della Dialog Procedure, avrei bisogno se possibile di richiamare SetDlgItemText da un'altra funzione ma non riesco... comunque adesso cerco una soluzione alternativa "spostando le funzioni", voi intanto ripondete...
ciao e grazie
Ricava l'handle alla dialog item tramite GetDlgItem e poi passa l'HWND alla tua funzione. In quel modo puoi usare SetWindowText per settare il testo.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 14:10   #13
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Be' allora non puoi farlo in quel modo: DialogBox() crea la finestra di dialogo, la visualizza, reagisce agli input e ti dà il codice relativo all'input dato (nel mio esempio, IDOK perché suppongo che l'utente abbia premuto "Ok" per confermare, ma poteva dirmi "Sì" e io ottenere IDYES). Quindi non ho capito di preciso come dovrebbe visualizzarti i file in trasferimento.

Direi che puoi fare in due modi: evitare DialogBox() e chiamare CreateDialog() per ottenere anche l'handle e usarlo come ti pare. L'alternativa è creare una semplice finestra figlia modale e avere ancora più libertà d'azione.

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 14:13   #14
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da cionci Guarda i messaggi
Ricava l'handle alla dialog item tramite GetDlgItem e poi passa l'HWND alla tua funzione. In quel modo puoi usare SetWindowText per settare il testo.
Ma GetDlgItem() non recupera solo l'handle dei controlli interni alla finestra? Che però sì, in effetti può farlo se ha bisogno di cambiare solo un'etichetta...
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 14:28   #15
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
ciao
ho trovato la soluzione, daniele hai ragione su entrambe le cose che sono comunque riuscito a risolvere creando una sorta di toolbar (che comunque sembra una finestra).
Oral'ultimo problema off-topic:
guardate questa funzione:
Codice:
oid copyallfile(BOOL &result)
{
    vector<string>::iterator a = listaofile.begin();
    vector<string>::iterator b = listadfile.begin();
    while(a != listaofile.end())
    {

        copymyfile((*a).c_str(), (*b).c_str(), result);

        a++; b++;

        cout<<*a<<endl; //visualizza il file di origine

        SetDlgItemText(g_hToolbar, IDC_TEXTPROGRESS, a); //funzione per cambiare il testo che non funziona, l'errore è causato dalla variabile a;


    }

}
allora io ho queste 2 variabili (a , b) che mi permettono di usare i due vettori che contengono strignhe che indicano l'origine e la destinazione dei file da copiare.
Siccome penso che a e b indichino la posizione nei vettori (ne sono sicuro se no non si implementerebbero per passare alla stringa successiva!!!) vorrei sapere come posso visualizzare il loro valore (numerico) nella finestra che ho creato perchè come ho scritto io non funziona.
Ciao e grazie dell'aiuto che mi state dando!!!
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 14:30   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
a->c_str()
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 14:41   #17
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
quello va bene ma per visualizzare la stringa del vettore, non per visualizzare a (inteso come numero).
Quindi???
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 15:08   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
????
Il terzo parametro deve essere un LPCTSTR...quindi non puoi passare un puntatore alla classe string.
In teoria ci sarebbero altri casini sulla conversione a wide char e così via, intanto inizia così.

Ultima modifica di cionci : 21-08-2008 alle 15:13.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 15:12   #19
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
e allora come faccio a far vedere quanti file ho già copiato???
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 21-08-2008, 15:19   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Non è che ti eri spiegato molto bene
a e b sono iteratori e non contatori.

Codice:
void copyallfile(BOOL &result)
{
    vector<string>::iterator a = listaofile.begin();
    vector<string>::iterator b = listadfile.begin();
    int counter = 0;
    while(a != listaofile.end())
    {

        copymyfile((*a).c_str(), (*b).c_str(), result);

        a++; b++; counter++; 

        cout<<*a<<endl; //visualizza il file di origine

        ostringstream<TCHAR> counterText;
        counterText << counter;

        SetDlgItemText(g_hToolbar, IDC_TEXTPROGRESS, counterText.str()); //funzione per cambiare il testo che non funziona, l'errore è causato dalla variabile a;


    }

}
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto ASUS Zenbook 14 (UX3480AA): tanta autonomia con ...
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare MSI PRO MAX: QD-OLED ultrawide per lavorare, cre...
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
Confidential Computing, Intel concentra ...
Con l'IA, sono i candidati a fare il col...
Orologi nucleari al torio: i primi due p...
L'auto più venduta di Volkswagen ...
OneDrive, addio ai 6 TB su Microsoft 365...
I cinesi si sono già infiltrati i...
Amazon Leo si prepara a sfidare Elon Mus...
HONOR CHOICE ADO Air 20 Pro arriva in It...
D-PACK LAB, nasce a Bologna la fabbrica ...
Anthropic regala Mythos, la sua migliore...
Nucleare spaziale: NASA e DOE firmano l'...
Intel Raptor Lake NEXT, GIGABYTE è...
HP OmniBook 5 e ProBook 4: specifiche te...
Google riabilita JPEG XL su Chrome dopo ...
OpenAI, ricavi annualizzati a 50 miliard...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:43.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v