The four parameters of stylebits are AddBit, RemoveBit, AddExtendedBit, RemoveExtendedBit. For a review of these four parameters, and an introduction to Stylebits in general, please view Stylebits - Windows.
Stylebits and Formatted Text
Many of the stylebits commands used with windows and textboxes can also be used with statictext controls. Since statictext doesn't accept user input, most of the stylebits effects involve text formatting and borders. Statictext can be justified horizontally using these commands -
_ES_LEFT
_ES_CENTER
_ES_RIGHT
Statictext can also be centered vertically using the command -
_SS_CENTERIMAGE
It is possible to create a nice etched look in your text using the command -
_WS_DISABLED
Use this strategy with caution, though. Any control disabled with the stylebits will require an API call to cause the statictext to later become enabled. The same look can be achieved using the native Liberty BASIC command !Disable and affords the programmer the opportunity to normalize the text look using !Enable later in the code.
There are some very interesting visual effects that can be achieved using a stylebits created border around your statictext.
Stylebits
_WS_DLGFRAME, 0, 0, 0
.....
Raised Background
0, 0, _WS_EX_STATICEDGE, 0
.....
Slightly Recessed Background
0, 0, _WS_EX_CLIENTEDGE, 0
.....
Deeper Recessed Background
0, 0, _WS_EX_STATICEDGE or _WS_EX_CLIENTEDGE, 0
.....
Double Recessed Background
_WS_BORDER, 0, 0, 0
.....
Thin Line Border
0, 0, _WS_EX_DLGMODALFRAME or _WS_EX_CLIENTEDGE, 0
.....
Raised Frame
_WS_THICKFRAME, 0, _WS_EX_DLGMODALFRAME or _WS_EX_CLIENTEDGE, 0
.....
Double Raised Frame
Stylebits and API Calls
Stylebits allow statictext to display images, but only when accompanied by an API call to user32.dll (SendMessageA). The height and width of the statictext will initially cause a smaller bitmap to stretch and fill the originally defined statictext dimensions. You can prevent this distortion by either making certain the statictext width and height is the same as the loaded bitmap or using the _SS_CENTERIMAGE stylebits. Recessed, raised and flat effects can be achieved using window edge stylebits.
Right - Click and save this bitmap as "boy.bmp" on your computer. Run the demo from the same folder in which you saved the bitmap. Once the code is run, maximizing the window will demonstrate how the bitmap stretches to fill the defined statictext area.
WindowWidth=600
WindowHeight=450
UpperLeftX = Int((DisplayWidth - WindowWidth)/2)
UpperLeftY = Int((DisplayHeight - WindowHeight)/2) - 14
Nomainwin
Loadbmp "boy", "boy.bmp"
Statictext #main.st0, "", 10, 10, 54, 100
Stylebits #main.st0, _SS_BITMAP, 0, 0, 0
Statictext #main, "The bitmap boy.bmp 54 x 100.", 90, 30, 150, 56
Statictext #main.st1, "", 10, 140, 80, 120
Stylebits #main.st1, _SS_BITMAP or _WS_BORDER, 0, 0, 0
Statictext #main, "Thin Line Border, Bitmap expands to fit defined statictext area (80 x 120) when window resized.", _
100, 120, 150, 140
Statictext #main.st2, "", 10, 300, 80, 120
Stylebits #main.st2, _SS_BITMAP or _WS_BORDER, 0, _WS_EX_STATICEDGE, 0
Statictext #main, "Etched look with _WS_BORDER and _WS_EX_STATEDGE, also resizes when window resized.", _
100, 280, 150, 140
Statictext #main.st3, "", 480, 70, 100, 150
Stylebits #main.st3, _SS_BITMAP or _SS_CENTERIMAGE, 0, _WS_EX_CLIENTEDGE, 0
Statictext #main, "_SS_ CENTERIMAGE prevents resizing when window resized.", 320, 90, 150, 140
Statictext #main.st4, "", 480, 250, 100, 150
Stylebits #main.st4, _SS_BITMAP or _SS_CENTERIMAGE, 0, _WS_EX_DLGMODALFRAME, 0
Statictext #main, "Borders can be raised, recessed or flat.", 320, 280, 150, 140
Open"Stylebits for Images on Statictext"for Window as #main
#main, "Trapclose [closeDemo]"
#main, "Font Times_New_Roman 14 Bold"
hStatic0 = hWnd(#main.st0)
hStatic1 = hWnd(#main.st1)
hStatic2 = hWnd(#main.st2)
hStatic3 = hWnd(#main.st3)
hStatic4 = hWnd(#main.st4)
hImage = hBmp("boy")
Call setImage hStatic0, hImage
Call setImage hStatic1, hImage
Call setImage hStatic2, hImage
Call setImage hStatic3, hImage
Call setImage hStatic4, hImage
Wait
Sub setImage hStatic, hImage
CallDLL #user32, "SendMessageA", _
hStatic as Ulong, _
_STM_SETIMAGE asLong, _
_IMAGE_BITMAP asLong, _
hImage as Ulong, _
result asLongEndSub
[closeDemo]
Close #main
Unloadbmp "boy"End
These are just some examples of what you can do with stylebits and statictext. With experimentation, you may find more.
A List of Stylebits
You can get a list of all dwStyles and dwExStyles available with the Stylebits command at the MSDN Library Center.
Reviewing the Stylebits Parameters
The four parameters of stylebits are AddBit, RemoveBit, AddExtendedBit, RemoveExtendedBit. For a review of these four parameters, and an introduction to Stylebits in general, please view Stylebits - Windows.
Stylebits and Formatted Text
Many of the stylebits commands used with windows and textboxes can also be used with statictext controls. Since statictext doesn't accept user input, most of the stylebits effects involve text formatting and borders. Statictext can be justified horizontally using these commands -
Statictext can also be centered vertically using the command -
It is possible to create a nice etched look in your text using the command -
Use this strategy with caution, though. Any control disabled with the stylebits will require an API call to cause the statictext to later become enabled. The same look can be achieved using the native Liberty BASIC command !Disable and affords the programmer the opportunity to normalize the text look using !Enable later in the code.
There are some very interesting visual effects that can be achieved using a stylebits created border around your statictext.
Stylebits and API Calls
Stylebits allow statictext to display images, but only when accompanied by an API call to user32.dll (SendMessageA). The height and width of the statictext will initially cause a smaller bitmap to stretch and fill the originally defined statictext dimensions. You can prevent this distortion by either making certain the statictext width and height is the same as the loaded bitmap or using the _SS_CENTERIMAGE stylebits. Recessed, raised and flat effects can be achieved using window edge stylebits.
Right - Click and save this bitmap as "boy.bmp" on your computer. Run the demo from the same folder in which you saved the bitmap. Once the code is run, maximizing the window will demonstrate how the bitmap stretches to fill the defined statictext area.
WindowWidth=600 WindowHeight=450 UpperLeftX = Int((DisplayWidth - WindowWidth)/2) UpperLeftY = Int((DisplayHeight - WindowHeight)/2) - 14 Nomainwin Loadbmp "boy", "boy.bmp" Statictext #main.st0, "", 10, 10, 54, 100 Stylebits #main.st0, _SS_BITMAP, 0, 0, 0 Statictext #main, "The bitmap boy.bmp 54 x 100.", 90, 30, 150, 56 Statictext #main.st1, "", 10, 140, 80, 120 Stylebits #main.st1, _SS_BITMAP or _WS_BORDER, 0, 0, 0 Statictext #main, "Thin Line Border, Bitmap expands to fit defined statictext area (80 x 120) when window resized.", _ 100, 120, 150, 140 Statictext #main.st2, "", 10, 300, 80, 120 Stylebits #main.st2, _SS_BITMAP or _WS_BORDER, 0, _WS_EX_STATICEDGE, 0 Statictext #main, "Etched look with _WS_BORDER and _WS_EX_STATEDGE, also resizes when window resized.", _ 100, 280, 150, 140 Statictext #main.st3, "", 480, 70, 100, 150 Stylebits #main.st3, _SS_BITMAP or _SS_CENTERIMAGE, 0, _WS_EX_CLIENTEDGE, 0 Statictext #main, "_SS_ CENTERIMAGE prevents resizing when window resized.", 320, 90, 150, 140 Statictext #main.st4, "", 480, 250, 100, 150 Stylebits #main.st4, _SS_BITMAP or _SS_CENTERIMAGE, 0, _WS_EX_DLGMODALFRAME, 0 Statictext #main, "Borders can be raised, recessed or flat.", 320, 280, 150, 140 Open "Stylebits for Images on Statictext" for Window as #main #main, "Trapclose [closeDemo]" #main, "Font Times_New_Roman 14 Bold" hStatic0 = hWnd(#main.st0) hStatic1 = hWnd(#main.st1) hStatic2 = hWnd(#main.st2) hStatic3 = hWnd(#main.st3) hStatic4 = hWnd(#main.st4) hImage = hBmp("boy") Call setImage hStatic0, hImage Call setImage hStatic1, hImage Call setImage hStatic2, hImage Call setImage hStatic3, hImage Call setImage hStatic4, hImage Wait Sub setImage hStatic, hImage CallDLL #user32, "SendMessageA", _ hStatic as Ulong, _ _STM_SETIMAGE as Long, _ _IMAGE_BITMAP as Long, _ hImage as Ulong, _ result as Long End Sub [closeDemo] Close #main Unloadbmp "boy" EndThese are just some examples of what you can do with stylebits and statictext. With experimentation, you may find more.
A List of Stylebits
You can get a list of all dwStyles and dwExStyles available with the Stylebits command at the MSDN Library Center.