Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Hola! Windows malo... : (

Iniciado por MChiz, 12 de Noviembre de 2002, 11:53:21 AM

« anterior - próximo »

MChiz

                                Hola a todos!

Estoy liado con la funcioncilla de Windows "SetWindowLong". Siempre me da error. Miro que el handle sea valido, esta en el mismo thread ( porque no uso mas ^_^ ), en fin... no se que hacer! Siempre me da 0 ( y el valor que yo le paso, no lo es ni lo puede ser nunca, ya que es una direccion de memoria ( of course que nunca es nulo ) ).
Si alguien tiene alguna idea, agradeceria mucho que me la diese!
Un saludote y gracias!                                

Juan Mellado

Hola MChiz.

Asi de entrada es dificil decir algo, con los datos que das. Sólo comentarte lo que dice la ayuda del API: que SetWindowLong() retorna el valor anterior al que tenía el long que estás modificando. Si el valor anterior es 0 entonces se debe mirar GetLastError(). Y para evitar problemas, resetear antes el último error con SetLastError(0).

A mi nunca me ha dado problemas. Es una función bastante "antigua", de las clásicas. Los programas más recientes deberían utilizar SetWindowLongPtr().

En fín, nada que no diga la ayuda.
Saludos.

MChiz

                                Si, perdon. He sido poco concreto.
Pues veras, el error que me devuelve es el 6 ( handle invalido ), pero no entiendo porque me dice eso... despues de hacer muchas pruebas, he encontrado en GameDev un articulo de esto, y lo hago bien ( en teoria, claro ). Hay algun factor al crear la ventana que intervenga? Tiene que ser WNDCLASSEX o puede ser WNDCLASS? Quizas la funcion CreateWindow en vez de CreateWindowEx? Aunque todo esto lo dudo...
Ah, como segundo parametro le doy GWL_USERDATA.
Probare la nueva funcion que me dices y lo del SetLastError.
Gracias!

PD: Estooo... acabo de ver que no tengo la funcion SetWindowLongPtr ^_^. No esta tampoco en las MSDN. Es algo nuevo del .NET? Tengo Visual C++ 6.                                

Juan Mellado

Lo de handle inválido parece indicar que el handle de la ventana no es válido. ¿?.

Prueba con un proyecto sencillo, que sólo haga eso. Crear una ventana y llamar a SetWindowLong(). A ver si el problema está por otro sitio, es un efecto lateral, y lo estás detectando ahí.

Hace poco posteé un link con un ejemplo en el que utilizaba SetWindowLong(), y no recuerdo que tuviera que hacer ninguna inicialización especial:
http://es.geocities.com/bou_bou_pe/win32_01.html

Lo del SetWindowLongPtr() lo leí directamente de la ayuda de un CD de MSDN. Era documentación sujeta a cambio, y se ve que finalmente decidieron no implementar (de momento) esa función.

En fin, no parece que te esté ayudando mucho.
Saludos y suerte.

MChiz

                                Hola!
Lo primero es darte las gracias por contestar mis dudas : )
He mirado el link que me has dado y... es lo que yo hago : (
Hare lo que me dices de crear un proyecto a parte y lo probare.
Muchas gracias!!
Un saludote!                                






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.