C/Visual C - Problemas empleando HWND en una DLL

 
Vista:

Problemas empleando HWND en una DLL

Publicado por Andoni (1 intervención) el 22/05/2006 09:55:44
Hola a todos.

Estoy realizando una especie de plataforma software que quiero encapsularla en una DLL. Si le quiero pasar como parametro el handle de una ventana de aplicación que he creado aparte, no consigo que me relacione la ventana de la aplicación con las funcionalidades que tengo en la DLL.

Me explico: Si implemento las funciones dentro de la aplicacion no tengo problemas. Hago el GetSafeHwnd() y obtengo un el handle de la ventana y con eso lo paso como parametro a la función que lo precise y obtengo resultados satisfactorios.

Ahora bien, si esas funciones las tengo encapsuladas en una DLL externa que hago link con la aplicacion, al hacer el GetSafeHwnd() en la aplicación y pasar el handle resultante como parametro a la función de la DLL no consigo los mismos resultados. También he probado pasando como parametro la misma ventana de aplicacion (objeto tipo CWnd*) y una vez con ese apuntador invocar al GetSafeHwnd() desde la DLL pero el resultado sigue siendo insatisfactorio.

Tras esta explicacion mi pregunta es:

Hay alguna manera de pasar objetos de tipo CWnd* o HWND (lo que obtendría tras realizar un GetSafeHwnd) desde la aplicación a una DLL linkada y que no de problemas?

Estoy en un momento crítico en un proyecto y me urge tener cualquier indicio, información, buenas practicas... lo que sea sobre este problema. Para cualquier aclaración adicional que puedan necesitar no duden en escribirme a esta dirección: [email protected]

Saludos,

Andoni
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Sergio Castillo

RE:Problemas empleando HWND en una DLL

Publicado por Sergio Castillo (47 intervenciones) el 22/05/2006 17:54:23
Hola, mira pasar un objeto HWND como parámetro en veces puede ser tormentoso, pues como sabes esto no es más que una variable puntero, la cuál se puede perder, para usar sus miembros debes usar el especificador -> y no el punto '.'
Por tanto, si no lo has intentado, puedes obtener el handle de la ventana que se pasa como parámetro en el winproc y llamar a tus funciones con ese parámetro sin obtenerlo de otra función, como dices que lo haces, si es que te sirve así, ya que creo que el problema reside en que al llamar GetSafehwnd() desde la DLL se pasa el handle de la Dll y no de la aplicación, eso si estoy en lo correcto.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar