That is the reason, I creating very often my own functions, not using Window-standards.
The Message-center-position is calculated inside the Function with given .T. ( .F. uses the defined Top/left-position )
You can use my solution, in case You like it.
There is still some work on the Painter to do.
In case You only want to use Brushes or Images, You can delete the not needed Parameters.
I need them complete, because testing all possible Combinations.
Maybe there will be some more, because of Shadow-size and Position.
Call the Function on Init or on Button-action.
A centered Message inside a Dialog :
ACTIVATE DIALOG oDlg1 CENTERED ;
ON INIT SHOW_MSG1( ;
oDlg1, ; // Object
nTStyle, ; // Background
nTTop, ; // Top
nTLeft, ; // Left
nTWidth, ; // Width
nTHeight, ; // Hight
oFont1, ; // Font Headline
oFont2, ; // Font Text
.T., ; // Message centerednTextT, ; // Text-Top
nTextL, ; // Text-Left
cTitle, ; // Title
cText1, ; // Text 1
cText2, ; // Text 2
cText3, ; // Text 3
cText4, ; // Text 4
cText5, ; // Text 5
nTColorF, ; // 1. Gradient-color
nTColorB, ; // 2. Gradient-color
nTGradPos, ; // Gradient-position
nTColor1, ; // Head-color
nTColor2, ; // Text-color
cTBitmap, ; // Bitmap
nBmpT, ; // Top
nBmpL, ; // Left
nBmpW, ; // Width
nBmpH, ; // Hight
cTBrush, ; // Brush
cTImage ) // Image
RETURN( NIL )
Best Regards
Uwe