elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  API SetCursor
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: API SetCursor  (Leído 4,063 veces)
DarkMatrix

Desconectado Desconectado

Mensajes: 150


Nuestro Limite es la Imaginacion


Ver Perfil WWW
Re: API SetCursor
« Respuesta #10 en: 22 Diciembre 2010, 01:03 am »

Mr. Frog © estas en lo correcto algo asi es lo que necesito, pero hay un problema, ya habia intentado algo asi y resulta que en la aplicacion en la que quiero implementar la funcion para cambiar el mouse ya tiene un sub que entra en un bucle y por lo tanto uno de los dos bucles no se ejecutara :S, Alguna otra idea?


En línea

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: API SetCursor
« Respuesta #11 en: 22 Diciembre 2010, 01:34 am »

Mezcla los 2 eventos :P Que tipo de bucle es ?


En línea

DarkMatrix

Desconectado Desconectado

Mensajes: 150


Nuestro Limite es la Imaginacion


Ver Perfil WWW
Re: API SetCursor
« Respuesta #12 en: 22 Diciembre 2010, 01:56 am »

Lo haria pero pasa que si se mezclan entonces el mouse no se redibuja con la frecuencia suficiente como para simular que el cursor no cambia :S, Es un bucle encargado de pintar en un picturebox el cual siempre se esta ejecutando.
En línea

Todo aquello que no se puede hacer, es lo que no intentamos hacer.
Projecto Ani-Dimension Digital Duel Masters (Juego de cartas masivo multijugador online hecho en Visual Basic 6.0)

Desing by DarkMatrix
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: API SetCursor
« Respuesta #13 en: 22 Diciembre 2010, 13:38 pm »

Entonces tienes un problema de repintado, tienes que optimizar el bucle ._.
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: API SetCursor
« Respuesta #14 en: 23 Diciembre 2010, 21:36 pm »

.
@DarkMatrix

si es para el juego de YuGioh que traes mejor resignate a pasarlo a un motor grafico como DirectX u OpenGL asi no tendras que gastar el procesador en vano.

Funcion Wait (No consume procesador)

Tome el ejemplo de la API Guide, saque todas las variable por que no queria estar revisando cuales eran las que se requerian asi que aqui tienes, no se come el proesador, y no para el hilo de tu programa.

Código
  1. '
  2. '   /////////////////////////////////////////////////////////////
  3. '   // Autor:   BlackZeroX ( Ortega Avila Miguel Angel )       //
  4. '   //                                                         //
  5. '   // Web:     http://InfrAngeluX.Sytes.Net/                  //
  6. '   //                                                         //
  7. '   //    |-> Pueden Distribuir Este codigo siempre y cuando   //
  8. '   // no se eliminen los creditos originales de este codigo   //
  9. '   // No importando que sea modificado/editado o engrandecido //
  10. '   // o achicado, si es en base a este codigo                 //
  11. '   /////////////////////////////////////////////////////////////
  12. '   // http://infrangelux.sytes.net/Blog/index.php?option=com_content&view=article&id=6:artwait&catid=2:catprocmanager&Itemid=8
  13. '   /////////////////////////////////////////////////////////////
  14. Option Explicit
  15. Private Declare Function WaitMessage Lib "user32" () As Long
  16. Enum eTime
  17.    Horas = 3600
  18.    Minutos = 60
  19.    Segundos = 1
  20. End Enum
  21.  
  22. Private Declare Function CreateCursor Lib "user32" (ByVal hInstance As Long, ByVal nXhotspot As Long, ByVal nYhotspot As Long, ByVal nWidth As Long, ByVal nHeight As Long, lpANDbitPlane As Any, lpXORbitPlane As Any) As Long
  23. Private Declare Function DestroyCursor Lib "user32" (ByVal hCursor As Long) As Long
  24. Private Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long
  25. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  26.    Dim hnewcursor As Long  ' newly created cursor
  27.    Dim holdcursor As Long  ' receives handle of default cursor
  28. Private Sub Form_Load()
  29.    'KPD-Team 1999
  30.    'URL: http://www.allapi.net/
  31.    'E-Mail: KPDTeam@Allapi.net
  32.  
  33.    ' Create a 32x32 color cursor shaped somewhat like a yin-yang symbol.
  34.    ' (The bit masks come from Microsoft's documentation on the API cursors function, just to
  35.    ' give them their due credit.)  Note how the masks are loaded into the arrays.  The new
  36.    ' cursor is then set to be the cursor for 10 seconds.
  37.    Dim andbuffer As String, xorbuffer As String  ' buffers for masks
  38.    Dim andbits(0 To 127) As Byte  ' stores the AND mask
  39.    Dim xorbits(0 To 127) As Byte  ' stores the XOR mask
  40.    Dim c As Integer, retval As Long  ' counter and return value
  41.  
  42.    ' Unfortunately, VB does not provide a nice way to load lots of information into an array.
  43.    ' To load the AND and XOR masks, we put the raw hex values into the string buffers
  44.    ' and use a loop to convert the hex values into numeric values and load them into
  45.    ' the elements of the array.  Yes, it's ugly, but there's no better way.  Note the
  46.    ' use of the line-continuation character here.  Each sequence of eight hex
  47.    ' characters represents one line in the 32x32 cursor.
  48.    andbuffer = "FFFC3FFF" & "FFC01FFF" & "FF003FFF" & "FE00FFFF" & _
  49.            "F701FFFF" & "F003FFFF" & "F003FFFF" & "E007FFFF" & _
  50.            "C007FFFF" & "C00FFFFF" & "800FFFFF" & "800FFFFF" & _
  51.            "8007FFFF" & "8007FFFF" & "0003FFFF" & "0000FFFF" & _
  52.            "00007FFF" & "00001FFF" & "00000FFF" & "80000FFF" & _
  53.            "800007FF" & "800007FF" & "C00007FF" & "C0000FFF" & _
  54.            "E0000FFF" & "F0001FFF" & "F0001FFF" & "F8003FFF" & _
  55.            "FE007FFF" & "FF00FFFF" & "FFC3FFFF" & "FFFFFFFF"
  56.    xorbuffer = "00000000" & "0003C000" & "003F0000" & "00FE0000" & _
  57.            "0EFC0000" & "07F80000" & "07F80000" & "0FF00000" & _
  58.            "1FF00000" & "1FE00000" & "3FE00000" & "3FE00000" & _
  59.            "3FF00000" & "7FF00000" & "7FF80000" & "7FFC0000" & _
  60.            "7FFF0000" & "7FFF8000" & "7FFFE000" & "3FFFE000" & _
  61.            "3FC7F000" & "3F83F000" & "1F83F000" & "1F83E000" & _
  62.            "0FC7E000" & "07FFC000" & "07FFC000" & "01FF8000" & _
  63.            "00FF0000" & "003C0000" & "00000000" & "00000000"
  64.    ' Now load these hex values into the proper arrays.
  65.    For c = 0 To 127
  66.        andbits(c) = Val("&H" & Mid(andbuffer, 2 * c + 1, 2))
  67.        xorbits(c) = Val("&H" & Mid(xorbuffer, 2 * c + 1, 2))
  68.    Next c
  69.    ' Finally, create this cursor!  The hotspot is at (19,2) on the cursor.
  70.    hnewcursor = CreateCursor(App.hInstance, 19, 2, 32, 32, andbits(0), xorbits(0))
  71.    ' Set the new cursor as the current cursor for 10 seconds and then switch back.
  72.   wait 10000, Horas   'Wait 10000 horas jeje haber que pc aguanta esto encendida...
  73.    retval = SetCursor(holdcursor)  ' change cursor back
  74.    ' Destroy the new cursor.
  75.    retval = DestroyCursor(hnewcursor)
  76. End Sub
  77. Public Sub wait(ByVal vToWait&, Optional ByVal ThisWait As eTime = Segundos, Optional ByVal UseAllProc As Boolean = False)
  78. Dim vDateE      As Date
  79.    vDateE = DateAdd("s", vToWait& * (ThisWait + 0), Time)
  80.    Do While vDateE > Time
  81.        holdcursor = SetCursor(hnewcursor)  ' change cursor
  82.        Call WaitMessage
  83.        If Not UseAllProc Then DoEvents
  84.    Loop
  85. End Sub
  86.  
  87.  

P.D.: Adapta el codigo y metelo a un modulo de clase y donde puse holdcursor = SetCursor(hnewcursor)  ' change cursor puedes meter un RaiseEvent... solo para notificar por mensajes entrantes asi se puede malear el proceso Wait()...

Temibles Lunas!¡.
« Última modificación: 23 Diciembre 2010, 22:02 pm por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines