ImgButtonX ControlThe image is placed in the center of the button. The imgbuttonx control is not resized. The image is resized to fit the imgbuttonx control. The image must come from a resource file.
The ImgButtonX control resizes images, whereas the ImgButton control does not.
Control Add ImgButtonX, hDlg, id&, image$, x, y, xx, yy, _
style&, extsytle& CALL callback
#Compile Exe
#Resource "pb-test.pbr"
Global hDlg As Dword
Function PBMain() As Long
Dialog New Pixels, 0, "ImgButtonX Test",300,300,200,200, _
%WS_SysMenu, 0 To hDlg
Control Add ImgButtonX, hDlg, 100,"cowgirl", 50,50,100,100
Dialog Show Modal hDlg Call DlgProc
End Function
CallBack Function DlgProc() As Long
If Cb.Msg = %WM_Command And Cb.Ctl = 100 And _
Cb.CtlMsg = %BN_Clicked Then
MsgBox "Pushed!"
End If
End Function
In this example, the image "cowgirl" is stored in a resource file, available from here.
An additional example of a callback function is provided further down this page.
As you can see, there's really not much you can do with a imgbuttonx. The image size simply changes with the imgbuttonx size. The image is always centered in the imgbuttonx control. You can also set which button is associated with pressing ENTER and ESC.
Arguments
The Control Add statement is used to create all new controls. Here are the
statement's arguments and any special significance to the imgbuttonx control.
An imgbuttonx with equate value %IDOK is triggered when the ENTER key is pressed.
An imgbuttonx with equate value %IDCANCEL is triggered when the ESCAPE key is pressed.
ImgButtonX-Specific PowerBASIC Statements
Although PowerBASIC provides control-specific statements for some controls (Treeview,
Imagelist, ...), there are no IMGBUTTONX PowerBASIC statements.
Messages, Notifications, Styles, and ExtSstyles
There are four types of named constants in the following table.
All are pulled from the
MSDN web site.
The first column contains control-specific named constants and the second column contains generic window named constants (imgbuttonX controls are windows).
Since the PowerBASIC imgbuttonx control is derived from the Windows button class, the first column contains MSDN button control constants.
Also, if the PowerBASIC Help file has an entry on the value, it is highlighted in yellow. If the value was noted in PowerBASIC Help as a default value, it is also shown in bold text.
In the values for notifications, descriptions starting with -n and -c refer to events received through the %wm_notify and %wm_command messages. By default, PowerBASIC controls can receive both of these messages.
And here is a short description of many of the named constants corresponding to notifications, styles, and extstyle - particularly those discussed in the PowerBASIC Help topics.
bcn_dropdown -n click on drop down arrow on control
bcn_hotitemchange -n mouse enters/leaves client area
bn_clicked -c mouse click
bn_dblclk -c mouse doubleclick
bn_disable -c (n/a - win3.0 only)
bn_doubleclicked -n mouse doubleclick
bn_hilite -c (n/a - win3.0 only)
bn_killfocus -c focus is lost
bn_paint -c control should be painted
bn_pushed -c (n/a - win3.0 only)
bn_setfocus -n focus is received
bn_unhilite -c when highlight should be removed
bn_unpushed -c (n/a - win3.0 only)
bs_bottom - text at bottom
bs_center - center text horizontally
bs_default - heavy black border, ENTER selects, 1 per dialog
bs_defpushbutton - same as bs_default
bs_left - text on left side
bs_multiline - wrap text
bs_notify - allows bn_killfocus/bn_setfocus messages
bs_pushlike - toggle between raised/sunken
bs_right - text on right side
bs_top - text at top
bs_vcenter - center text vertically
nm_customdraw -n custom draw operation
wm_ctlcolorbtn - before drawing owner-drawn control
ws_border - use thin line border
ws_disabled - initially disabled (no user input)
ws_ex_left - generic left-aligned properties
ws_ex_right - generic right-aligned properties
ws_ex_transparent - draw controls/windows beneath control first
ws_group - starts/ends group. use ws_tabstop style.
ws_tabstop - allows receipt of keyboard focus
Callback Function
A control can have its own callback function, or use the parent
dialog callback function.
A control callback function should return TRUE to indicate it has processed the message. This prevents unnecessarily calling the dialog callback function, which will process the message if no control callback function is available, or if the control callback function returns FALSE.
By default, both %WM_COMMAND and %WM_NOTIFY messages are received. However, if the #MESSAGE COMMAND compiler directive is invoked, the %WM_NOTIFY messages will not be available.
In addition, %bs_notify must be included in style& to receive the %bn_killfocus and %bn_setfocus messages
Here's a sample imgbuttonx control callback function.
CallBack Function cbImgButtonX()
Select Case CB.MSG
Case %WM_COMMAND
Select Case CB.CTL
Case %MyControl_ID 'whatever ID was assigned
Select Case CB.CTLMSG
Case %bn_clicked
Case %bn_disable
Case %bn_killfocus
Case %bn_setfocus
End Select
End Select
End Select
End Function
In each Case section, add the statements the application needs to respond to the event. Also, be sure to add "Function=1" as appropriate to indicate that the event was handled by the callback function.
CONTROL Statement Syntax
The following table lists the various Control statements (except the ADD statements).
Most, but not all, can be used with the imgbuttonx control. A one-line description of
the statement and then its syntax are presented.
CONTROL DISABLE disable
hDlg, id&
CONTROL ENABLE enable
hDlg, id&
CONTROL GET CHECK check state
hDlg, id& TO iResult1&
CONTROL GET CLIENT top/left location
hDlg, id& TO wide&, high&
CONTROL GET LOC top/left location
hDlg, id& TO x&, y&
CONTROL GET SIZE width/height
hDlg, id& TO width&, height&
CONTROL GET TEXT text
hDlg, id& TO txt$
CONTROL GET USER get user data
hDlg, id&, index& TO retvar&
CONTROL HANDLE window handle for control id
hDlg, id& TO hCtl&
CONTROL KILL remove control
hDlg, id&
CONTROL POST put message in queue (non-blocking)
hDlg, id&, Msg&, wParam&, lParam&
CONTROL REDRAW schedule redraw of control
hDlg, id&
CONTROL SEND send message to control, wait for processing
hDlg, id&, Msg&, wParam&, lParam& TO iResult2&
CONTROL SET CHECK set check for 3state or checkbox
hDlg, id&, checkstate&
CONTROL SET CLIENT change size to specific client area size
hDlg, id&, wide&, high&
CONTROL SET COLOR set fg/bg color
hDlg, id&, fgcolor&, bgcolor&
CONTROL SET FOCUS set focus
hDlg, id&
CONTROL SET FONT select font for a control
hDlg, id&, fonthandle&
CONTROL SET LOC relocate control within dialog
hDlg, id&, x&, y&
CONTROL SET OPTION set check state of option control
hDlg, id&, minid&, maxid&
CONTROL SET SIZE change control size
hDlg, id&, width&, height&
CONTROL SET TEXT change control text
hDlg, id&, text$
CONTROL SET USER set user data
hDlg, id&, index&, uservalue&
CONTROL SHOW STATE toggle visibility
hDlg, id&, showstate& TO iResult3&
If you have any suggestions or corrections, please let me know.