Ver por etiquetas

La estructura intraducible, I (de Interop y otras yerbas)
Published 19/12/2008 20:23 | Rafael Ontivero
A veces resulta curioso cómo algo tan sencillo como mapear una estructura de C en .NET se puede convertir en un algo muy cercano a una pesadilla dependiendo del lenguaje que hayamos elegido para realizarlo. Partamos de la siguiente estructura de C: typedef struct { BYTE byOut[4]; // Outputs [0..3] BYTE byAux; // Aux output } usbOutput; A simple vista es algo muy elemental: un array de cuatro bytes y uno más después. Esto en una máquina Intel en realidad termina ocupando 8 bytes, 4 para el primer...
Singleton con y sin Singleton
Published 3/3/2008 19:20 | Rafael Ontivero
Ahora que están de moda los antipatrones, voy a explicar un patrón que es muy famoso pero que no me gusta absolutamente nada, no por el diseño del mismo, sino por los efectos laterales no deseados que genera. Por ello también voy a explicar otra forma de construirlo que me gusta más, aunque adolece de otras limitaciones. Singleton es un patrón que nos obliga a tener una sola instancia de una clase, es decir, globalmente sólo podremos disponer de un objeto de ese...
Archivado en: ,,,
C++/CLI y C# VII: GetLastError en escenarios de interop
Published 25/11/2007 20:59 | Rafael Ontivero
Introducción Hay un tema que ha aparecido indirectamente en algunos mensajes del grupo de C# relativo al tema de Interop mediante atributos (que es el único que puede hacer C# y VB.NET), y que desde que estoy leyendo dicho grupo nadie ha advertido o ha tenido algún problema con él, o al menos yo no me he dado cuenta de ello. Cuando uno hace una llamada al API de Win32, muchas funciones devuelven un estado de error a través de un handle inválido o simplemente devolviendo FALSE . Es una consecuencia...
Archivado en: ,,
Trabajar con doble buffer en un Panel
Published 28/2/2007 19:11 | Rafael Ontivero
Generalmente cuando trabajo con gráficos suelo pintar sobre el área cliente de la propia ficha, pero esta vez he tenido que hacerlo por narices en un panel. Activar el sistema de doble buffer de una ficha es muy sencillo, tenemos que cambiar su estilo y aplicarlo. Algo así: this .SetStyle( ControlStyles .OptimizedDoubleBuffer | ControlStyles .ResizeRedraw | ControlStyles .AllPaintingInWmPaint, true ); this .UpdateStyles(); El primer valor de ControlStyles indica que se va a activar el doble buffer...
Archivado en: ,
Un gallinfante de regalo a quien sepa la respuesta
Published 27/2/2007 18:26 | Rafael Ontivero
Esta entrada va a ser muy cortita. Es una pregunta dejada al aire, por si alguien la quiere recoger... Existe la estructura RectangleF , que es un rectángulo con sus coordenadas marcadas en coma flotante. Existen infinitud de métodos que permiten dibujar y operar con dichas estructuras como elementos de delimitación ( DrawString , DrawImage , DrawEllipse , etc, etc...) Entonces, ¿por qué no existe un método Invalidate que nos acepte un RectangleF? Evidentemente existe un workaround , y es crear una...
Archivado en: ,