Noticias Weblogs Foros Wiki Código
Sponsors:

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

PlanetaCódigo en inglés

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

Adiós, HWND, adiós

Marzo 30th, 2006 - [Enlace local]

Nish es uno de los gurús de MFC, C++/CLI, y siempre dice cosas interesantes. Como la que acaba de poner en su blog. Brevemente nos dice que en el nuevo Avalon los controles de ventana hijos dejarán de tener su handle, por lo que será imposible hacer como hasta ahora: cuando una característica no está disponible dentro del .NET Framework, si es una ventana (recordemos que en Windows la mayoría de elementos son ventanas), buscamos/obtenemos su handle y le enviamos el mensaje correspondiente.

Pero eso ya no va a ser posible en Avalon. O sea, que si quieres implementar una características que sí tiene un control nativo de Windows y no el .NET, pues te jodes, porque no vas a poder hacerlo. En otras palabras, los controles Avalon no tienen nada que ver con el funcionamiento por mensajes de Windows.

¿Esto es bueno? ¿Es malo? Pues en mi opinión, depende. Es bueno porque poco a poco nos vamos apartando del aparatoso e ineficiente sistema de paso de mensajes, que genera unas aplicaciones un tanto estrambóticas (ya me gustaría a mi echarle un vistazo al bucle de mensajes de, por ejemplo, Word). Es malo porque no veo cómo va a ser sustituido. ¿Por hilos? ¿Y cómo van a interactuar esos hilos? ¿Mediante semáforos, secciones críticas? Lo veo complicado, pero bueno, ellos sabrán qué se hacen.

Ahora, eso sí, espero que las funcionalidades sean las mismas que con los controles nativos. Me refiero a subclasificación, capturar mensajes y variar comportamiento, etc., porque si no es así me veo a todos los programas con el mismo aspecto, sin poder hacer variación alguna…

Podría haber un motivo oculto para hacer esto así, y es el hecho de potenciar a los vendedores de componentes. Actualmente es relativamente fácil añadir a un list box, por ejemplo, pequeños iconcitos al texto: captura su WM_PAINT y dibuja lo que te de la gana. Pero si un componente viene prefijado y tu quieres una variación, pues te toca pasar por caja. Espero que no, que se puedan subclasificar -heredar- y todo eso.

Voy a poner un ejemplo sufrido en carnes propias con el .NET 1.1 y el hecho de que no cubra todo lo que hasta ahora se puede hacer de forma nativa. En uno de mis programas OpenSource, zxFortunes, necesitaba tener un icono en la barra de notificación. Existe para ello un componente dentro del .NET, llamado TrayIcon. Pero este elemento es un juguete en comparación con las posibilidades del equivalente nativo. Pues bien, pensando que al final, debajo de todo, debía estar el control nativo, busqué y busqué la forma de llegar a él y habilitar sus características… Fue del todo imposible. Ni con interop, ni insertando una dll en el espacio de direcciones que hiciera de puente, nada, fue totalmente imposible.

Imaginemos, pues, un mundo en el que todo estuviera limitado de esta forma… Pues ese es el mundo al que nos está abocando Microsoft y su “maravilloso” .NET. Sinceramente espero equivocarme.

» Leer más, comentarios, etc...