Differenze tra le versioni di "DirectX/Altre funzioni Win32"

nessun oggetto della modifica
(Nuova pagina: {{DirectX}} In questo modulo potrete trovare delle funzioni non strettamente correlate al mondo della grafica, ma che comunque è sempre utile avere a portata di mano, per risparmia...)
 
</source>
Per un elenco più dettagliato vedere [http://msdn.microsoft.com/en-us/library/windows/desktop/ms648391(v=VS.85).aspx qui].
 
== Spostare e ridimensionare la finestra ==
Per entrambi gli scopi esiste un unica funzione: ''SetWindowPos''. Questa funzione consente di spostare, ridimensionare, mostrare e nascondere una finestra con un solo comando. La sintassi è:
<source lang="cpp">
SetWindowPos(HWND hWnd, HWND hInsertAfter, int X, int Y, int cx, int cy, UINT flags);
</source>
*hWnd: è l'HANDLE della finestra da spostare.
*X, Y: sono le nuove coordinate della finestra nello schermo.
*cx, cy: sono le nuove dimensioni della finestra.
*hInsertAfter serve per controllare l'ordine delle finestre. Impostandolo ad HWND_TOP, la finestra apparirà in primo piano, con HWND_BOTTOM, la finestra sarà nascosta da tutte le altre. Specificando un HANDLE di un altra finestra, la nostra sarà appena sopra quella specificata.
*flags: con questo parametro possiamo escludere, il movimento, o il ridimensionamento, insomma possiamo scegliere quale delle tre funzioni usare, o farle usare tutte. Per esempio con SWP_NOMOVE, X ed Y sono ignorati. Con SWP_NOSIZE vengono ignorati cx e cy, mentre con SWP_NOZORDER, viene mantenuta la posizione relativa alle altre finestre, ignorando hInsertAfter. Un ulteriore flage SWP_NOACTIVATE. Normalmente SetWindowPos invia un messaggio di tipo WM_ACTIVATE alla finestra. Usando questa flag evitiamo questo effetto indesiderato.
 
In definitiva:
<source lang="cpp">
SetWindowPos(hWnd, NULL, 0, 0, nuovaLarghezza, nuovaAltezza, SWP_NOZORDER | SWP_NOMOVE | SWP_NOACTIVATE); // Ridimensiona ma non sposta
SetWindowPos(hWnd, NULL, nuovoX, nuovoY, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE); // Sposta ma non ridimensiona
SetWindowPos(hWnd, HWND_TOP, nuovoX, nuovoY, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE); // Sposta e porta in primo piano ma non ridimensiona
SetWindowPos(hWnd, HWND_BOTTOM, nuovoX, nuovoY, nuovaLarghezza, nuovaAltezza, SWP_NOACTIVATE); // Sposta, ridimensiona e nasconde sotto le altre finestre.
</source>
Sono disponibili altre flags e valori di hInsertAfter, ma qui non verranno trattati. Li troverete [http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545(v=vs.85).aspx qui].
 
[[Categoria:DirectX|Inizializzazione|Altre funzioni Win32]]
{{Avanzamento|5075%|13 ottobre 2011}}