Saludos a Todos !!!

Este post vendría a ser una continuación (o más bién el resultado o solución o como quieran llamarle

) del tema tratado "Problemas con las API's".
Como mencioné allá, las API's "son como campos minados" en la programación... sino estás claro en lo que haces con ellas, te explota un error, que jamás en la vida te hubiese imaginado que existía

.
Tenía problemas con:
CreateRoundRectRgn y
SetWindowRgn. Dichas funciones sirven para 'redondear' las esquinas de un
Form y un
PictureBox. Descubrí (no es que haya descubierto la pólvora o el agua tibia, no señor, lo que pasa es que no sabía) experimentando que se podía lograr este ''efecto" directamente en un
UserControl y en un
CustomControl (parecido al
UC, pero que se crea en código, no se puede ver en tiempo de diseño).
¿Por qué de todo esto? porque mi deseo era diseñar un botón 3D para las aplicaciones que diseño. Intenté primero con un
PictureBox, no convencían los resultados (visuales, claro está)

, lo probé con un
UC y si resultó satisfactorio

.
Decidí probar con un
CC (CustomControl), pensando, en por lo menos consumir menos recursos, porque como ya mencioné, dicho control se "dibuja" en tiempo de ejecución.
A continuación, coloco una muestra de como pueden verse:

Ahora un ejemplo del botón en sus 3 estados: Normal, Cuando el cursor pasa por encima y al ser "presionado":

"Normal"

"Cursor encima"

"Botón pulsado"
Adicional, estas propiedades pueden ser configuradas también:

Las propiedades
ButtonBorderColorHover,
ButtonBorderColorNormal y
ButtonBorderColorPulsed determinan el color del borde del botón según su estado.
CornerRadius, la curvatura de las esquinas del botón.
CornerX y
CornerY, conviene dejarlas con valor 0 (de lo contrario se vería 'descuadrado' el botón).
FinalGradientMouseDown,
FinalGradientMouseEnter,
FinalGradientMouseLeave y
FinalGradientPaint, muestran el color final en el efecto de degradado del botón.
FontSize, El tamaño de la fuente del texto.
FontText, Tipo de fuente (aquí, hay que colocar el nombre de la fuente, debido a que no lo coloqué una página de propiedades.
InitialGradientMouseDown, InitialGradientMouseEnter, InitialGradientMouseLeave y InitialGradientMousePaint, muestran el color inicial del degradado del botón.
TextButton, El texto que lleva el botón (ya que éste, es 'dibujado' con el método
DrawString)
Con respecto a la presentación visual, no digo que sea una "obra de arte", pero estoy tratando de mejorarla, se aceptan todas las sugerencias y correcciones posibles.
Ah, no se me ha olvidado colocar el código respectivamente, dentro de poco lo subo a 'rapidshare', 'megaupload' o 'fileserve'.
Saludos !!!
Manuel F. Borrego S.

Barcelona, Edo. Anzoátegui. Barcelona.