In Win32 per incollare i dati negli appunti devo chiamare GlobalAlloc()
, quindi GlobalLock()
per ottenere un puntatore, quindi copiare i dati, quindi chiamare GlobalUnlock()
e SetClipboardData()
.Cosa succede se chiamo GlobalLock(), quindi non riesco a chiamare GlobalUnlock()?
Se il codice è in C++ un'eccezione potrebbe essere gettati tra le chiamate al GlobalLock()
e GlobalUnlock()
e se non mi prendo cura di questo GlobalUnlock()
non sarà chiamato.
Si tratta di un problema? Cosa succede esattamente se chiamo GlobalLock()
e per qualsiasi motivo salta una chiamata GlobalUnlock()
?
No, non si deve chiamare GlobalFree() se i dati vengono incollati negli Appunti: la proprietà viene passata al clipborad e la memoria verrà rilasciata una volta dopo. – sharptooth
Sì, hai ragione, se la chiamata a SetClipboardData è stata eseguita correttamente. Altrimenti, devi chiamare entrambi. Post modificato di conseguenza. –