2012-06-03 13 views
5

cambio el cursor del sistema con SetSystemCursor, pero cuando intento restablecer el cursor del sistema a normal con DestroyCursor, ¡no pasa nada!Restablecer el cursor del sistema personalizado a la normal

¿Alguna idea?

Gracias!

+0

¿Por qué usa una API para que? [Cursor static class] (http://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.aspx) no funciona para usted? – Steve

+0

Normalmente guardarías el cursor curren, lo cambiarías y luego, cuando lo hayas hecho, lo restablecerás a wat, fue con otra llamada a SetSystemCursor –

Respuesta

4

Como se documentó, la función SetSystemCursor() ya destruye el cursor pasado, por lo que volver a destruirlo no tendrá ningún efecto.

Tendrá que guardar una copia de la edad del cursor para que pueda restaurar más tarde:

// Global Variables: 
HCURSOR hOldCursor; 
... 
    hOldCursor = CopyCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW))); 
    HCURSOR hNewCursor = CopyCursor(LoadCursor(hInstance, MAKEINTRESOURCE(IDC_MYCURSOR))); 
    SetSystemCursor(hNewCursor, OCR_NORMAL); 

y restaurar así:

SetSystemCursor(hOldCursor, OCR_NORMAL); 
DestroyCursor(hOldCursor); 
hOldCursor = NULL; 

Nota del dolor considerable cuando usted causa su programa termina sin restaurar el cursor. Como lo experimenté yo probando este código. Cambiar los cursores del sistema es bastante desagradable, ya que tiene un efecto global en todos los demás programas que se ejecutan en el escritorio.

3

Alternativamente, puede restaurar los valores predeterminados de los cursores del sistema como este:

SystemParametersInfo(SPI_SETCURSORS, 0, NULL, 0); 

donde SPI_SETCURSORS se define como 0x0057, tal como se describe here

Cuestiones relacionadas