Alveiro,
No, asi no hace, puesto que así estarias creando un nuevo control TSay cada vez que se pintase el botón, y eso consumiría muchos recursos y al final incluso podria tirar la aplicación.
La forma de escribir texto es usando la función DrawText() ó tambien serviría la función ExtTextOut():
oBtn:bPainted = { | hDC | DrawText( hDC, "Hola", { 0, 0, oBtnBmp:nWidth, oBtnBmp:nHeight }, nStyle )
Ese array de cuatro elementos es el rectángulo en donde se escibirá el texto dentro de la superficie del botón. nStyle es el estilo a usar de estos:
#define DT_TOP 0
#define DT_LEFT 0
#define DT_CENTER 1
#define DT_RIGHT 2
#define DT_VCENTER 4
#define DT_BOTTOM 8
#define DT_WORDBREAK 16
#define DT_SINGLELINE 32
#define DT_CALCRECT 1024
Para una explicación de estos estilos puedes
revisar:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd162498(v=vs.85).aspxSi deseas cambiar el color del texto a pintar, debes usar la función SetTextColor( hDC, CLR_BLUE ) (los colores estan en colors.ch, ó cualquier combinación RGB usando la función nRgb( nRed, nGreen, nBlue ) y llamarias a esta función desde el codeblock antes de llamar a DrawText()
Tambien puedes cambiar el font a usar, etc.