Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 23
  1. #11
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Beh ... ma cosa c'e' scritto tra i parametri della CreateWindow?

    E cosa c'entra quella variabile in tutto cio' ?

  2. #12
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    c'entra perchè tra i parametri della CreateWindow ce n'è uno che deve indicare la finestra "madre" a cui deve appartenere il controllo che sto creando...

    per quanto riguarda quella CreateWindow è la seguente

    codice:
    HWND ButtonOK
    ButtonOk = CreateWindow(TEXT("BUTTON"), "OK", WS_CHILD | WS_VISIBLE,    
                                        170, 50, 40, 15, 
                                        hWnd, //<-- Eccola qui
                                        (HMENU)IDC_BUTTON,
                                        ((LPCREATESTRUCT)(lParam))->hInstance,
                                        NULL);
    
    if(!ButtonOk){ 
        MessageBox(NULL,"Errore nella creazione del pulsante OK","ERRORE",MB_OK | MB_ICONEXCLAMATION);
    return NULL;
    }
    La funzione per la creazione del bottone è tutta li... la stessa funzione vale anche per le label e le textbox..... all'inizio (quando avevo la variabile hWnd dichiarata localmente) funzionava tutto... ma ora il programma è molto grosso e non mi posso permetterla di averla dichiarata locale... controllando di nuovo tutto il programma sono sicuro di non aver fatto multiple dichiarazioni....

  3. #13
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma quel parametro rappresenta l'handle della finestra parent ... E quando viene assegnato il valore alla hWnd?

  4. #14
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    All'inizio del programma.... nel file form.cpp ho il seguente codice:

    codice:
    ...
    hWnd = CreateWindow(....);
    la finestra viene creata correttamente...

  5. #15
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dovresti individuare il codice di errore chiamando subito dopo la CreateWindow del pulsante la funzione GetLastError e visualizzando il valore restituito ...

  6. #16
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Comunque, se mi permetti di dirlo, mi sembra strano che ti serva un HWND globale.
    Se la creazione dei controlli la si fa "a mano", in genere la si fa in risposta al messaggio WM_CREATE. In quel caso il HWND del padre ce l'hai.
    Poi in genere (almeno per me personalmente) se nella window-procedure devo scrivere parecchio codice in risposta ad un messaggio, creo una funzione apposita, a cui passo come minimo il HWND. Quindi anche in quel caso ce l'ho nuovamente.
    Cioè, per dirla in breve, non vedo la necessità di avere una variabile globale che tiene un HWND di una finestra.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #17
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    Scusate... problemi con la linea.... rieccomi... allora...

    @Oregon: ho messo questo GetLastError... debuggando e mettendo un punto di interruzione in prossimità del GetLastError tra le espressioni di controllo mi compare:

    codice:
    "hWnd    Valore:CXX0017: Errore: Impossibile trovare il simbolo hWnd"
    La cosa strana è che avevo cambiato nome alla variabile hWnd come avevi detto tu... e ora si dovrebbe chiamare form no hWnd.... però sono sicuro che nel codice non sia scritto da nessuna parte quell' hWnd infatti non da nessun errore in fase di compilazione....

    Ho provato a ricambiare nome alla variabile e l'ho richiamata hWnd ora, debuggando quando arriva a GetLastError mi compare:

    codice:
    "hWnd     Valore:0x0000000 {unused=???}    Tipo: HWND__"
    e schiacciando sul "+" alla sinistra di "hWnd" compare:
    codice:
    unused       CXX0030: Errore: Impossibile valutare l'espressione


    @AndBin: non so che dirti... questo è il mio primo progetto Win32 e sicuramente sarà impostato male.... mi sono ritrovato funzioni che avevano bisogno di questo hWnd all'interno di altre funzioni che richiamavano sempre questo hWnd.... siccome la cosa mi sembrava abbastanza ingarbugliata (e visto hce comunque utillizzavo questa variabile in tutte le funzioni) ho deciso di dichiararla goblale e ho apportato le dovute modifiche al codice....



    @all: Se necessario vi passo il codice... ditemi voi come, dove....

  8. #18
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    che faccio allora? ancora non ho capito il problema quale sia....

  9. #19
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Facciamo il punto della situazione:
    - Il tuo programma è composto da più sorgenti .cpp
    - Vuoi che ci sia una variabile hWnd di tipo HWND che sia comune e visibile a tutti i sorgenti.

    Giusto? Come ho già detto, ignoro il perché tu debba per forza avere la necessità di usare una variabile HWND globale ... ma qui bisognerebbe vedere come è strutturato il codice.
    Comunque, a parte questo:

    - Hai un file di header che è incluso da tutti i sorgenti? Se sì, hai messo un
    extern HWND hWnd;
    in questo header?

    - Hai messo in 1 solo sorgente (si presume quello in cui crei questa finestra) una variabile fuori dalle funzioni
    HWND hWnd;
    ?

    - Ti sei assicurato che non ci siano variabili locali che "nascondano" la variabile hWnd che hai messo come globale??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #20
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    si è tutto corretto....

    ho fatto come hai detto tu ma non va.... nessun errore in fase di compilazione, nessun warning... ma appena avvio il programma mi entra in questi if:
    codice:
    if(!ButtonOk){ 
        MessageBox(NULL,"Errore nella creazione del pulsante OK","ERRORE",MB_OK | MB_ICONEXCLAMATION);
    return NULL;
    }
    (Validi anche per label e textbox);

    Non saprei.... per quanto riguarda il codice non so fino a che punto sia conveniente scriverlo tutto sul forum... posso provare.... o al max zippo il pregetto e ve lo invio via email...

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.