Newsgroup: it.comp.programmare.win32
Titolo: [VC++] GetDlgItem su winmain

GetDlgItem(hwnd,105)
Io uso questa funzione dentro la procedurecall del winmain ! Ma sela metto
nel winmani non so come passare l'hwnd ! Aiuto !

 nel winmani non so come passare l'hwnd ! Aiuto !
Spiegati meglio che non ho capito ...


Dice il saggio: se non hai una hwnd da passare, quella funzione non hai 
bisogno di chiamare <g>

 ha scritto nel messaggio
news:SLMkc.176906$rM4.7...@news4.tin.it...

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
 InitCommonControls();
 iItemCount=0;
    /////Inizializzo l'imagelist
 HICON hIcon1=LoadIcon(hInstance,MAKEINTRESOURCE(112));
 iml1 = ImageList_Create(32,32,ILC_COLOR32,0,10);
    if (iml1==NULL)MessageBox(0,"Errore creazione ImageList","Errore",0);
 if (ImageList_AddIcon(iml1,hIcon1)<0)MessageBox(0,"Errore
AddIcon","Errore",0);
 ////////////////////////////////////////////////
    DialogBox(hInstance,"MIODIALOGO",0,newWndProc);
 return 0;
}
volevo aggiungere
SendMessage(GetDlgItem(hwnd,105),LVM_SETIMAGELIST,LVSIL_NORMAL,(LPARAM)iml1)
;
ma non ho hwnd !

 ha scritto nel messaggio
news:L5Okc.128844$hc5.5...@news3.tin.it...

invece di farlo nel winmain, fallo nella wndproc in risposta al messaggio
WM_INITDIALOG
--
Pela

 ha scritto nel messaggio
news:UlPkc.177400$rM4.7...@news4.tin.it...

ok grazie !

 WM_INITDIALOG
Il quoting , questo sconosciuto.........

 ha scritto nel messaggio
news:1sRkc.33243$Qc.12...@twister1.libero.it...

Si ma siccome ho alcune funzioni nel winmain che richiedono l'hInstance
invece altre che mi richiedono hwnd ! Come faccio !? E poi che differenza
c'è tra hInstance e hWnd ?

 c'è tra hInstance e hWnd ?
Il tipo di dato HWND e' genericamente un handle a una finestra. Qualunque
tipo di finestra, sia essa una top-level, una child o una dialog-box (che e'
sempre una finestra comunque !).
Il tipo di dato HINSTANCE e' un handle alla istanza della applicazione.
L'istanza di una applicazione viene passata nel primo parametro della
WinMain e non cambia durante tutta l'esecuzione della applicazione. E
inoltre il suo valore e' ovviamente univoco all'interno del sistema.
Io in genere metto in testa al sorgente una bella variabile globale:
HINSTANCE   g_hInstance;
e nel WinMain la valorizzo con l'hInstance passato alla WinMain. In questo
modo, dovunque nella applicazione abbia bisogno dell'istanza ... uso
comodamente la variabile globale.
Ovviamente ognuno puo' fare come meglio crede !
HINSTANCE e HWND sono quindi tipi di dato diversi e da non confondere.

 ha scritto nel messaggio
news:AUSkc.129759$hc5.5...@news3.tin.it...

oki ho capito ! E se avessi bisogno dell'hwnd ,creato con il DialobBox()
,nel winmain come lo recupero ?

 ,nel winmain come lo recupero ?
Mi sorge il dubbio che non hai capito come funziona la DialogBox().
Allora, la funzione DialogBox crea una dialog box di tipo *modale*. Questo
vuol dire che una volta chiamata la DialogBox esce da questa funzione
soltanto quando la finestra e' stata chiusa e poi "distrutta" a fronte di
una chiamata a EndDialog da qualche parte all'interno della window
procedure.
// Creazione dialog box
DialogBox (hInstance, .....);   // Rimane bloccato qui dentro fino alla
chiusura della dialog.
// Esce dalla DialogBox()
// Qui la finestra creata dalla DialogBox *non* esiste piu' quindi e'
inutile cercare di ottenere un handle.

 ha scritto nel messaggio
news:CXTkc.178314$rM4.7...@news4.tin.it...

ah ok ! Quindi come dovrei procedere per creare una finestra "normale" con
il dialogo che ho nel resource ?

 il dialogo che ho nel resource ?
Vai sul mio sito (vedi firma) e nella sezione "software" ci trovi gli esempi
minimali per creare una applicazione basata su finestra, su dialog-box
modale e su dialog-box non modale.
Ciao.
--
Andrea Binello
www.andreabinello.com
 # Software # Codice sorgente
 # Articoli # Tips&Tricks
 # Icone  # Sfondi