
' Button Control Styles

Const BS_PUSHBUTTON       = &h00000000&
Const BS_DEFPUSHBUTTON    = &h00000001&
Const BS_CHECKBOX         = &h00000002&
Const BS_AUTOCHECKBOX     = &h00000003&
Const BS_RADIOBUTTON      = &h00000004&
Const BS_3STATE           = &h00000005&
Const BS_AUTO3STATE       = &h00000006&
Const BS_GROUPBOX         = &h00000007&
Const BS_USERBUTTON       = &h00000008&
Const BS_AUTORADIOBUTTON  = &h00000009&
Const BS_OWNERDRAW        = &h0000000B&
Const BS_LEFTTEXT         = &h00000020&
'If (WINVER >= &h0400) Then
Const BS_TEXT             = &h00000000&
Const BS_ICON             = &h00000040&
Const BS_BITMAP           = &h00000080&
Const BS_LEFT             = &h00000100&
Const BS_RIGHT            = &h00000200&
Const BS_CENTER           = &h00000300&
Const BS_TOP              = &h00000400&
Const BS_BOTTOM           = &h00000800&
Const BS_VCENTER          = &h00000C00&
Const BS_PUSHLIKE         = &h00001000&
Const BS_MULTILINE        = &h00002000&
Const BS_NOTIFY           = &h00004000&
Const BS_FLAT             = &h00008000&
Const BS_RIGHTBUTTON      = BS_LEFTTEXT
'End If ' WINVER >= &h0400

' Static Control Constants

Const SS_LEFT             = &h00000000&
Const SS_CENTER           = &h00000001&
Const SS_RIGHT            = &h00000002&
Const SS_BLACKRECT        = &h00000004&
Const SS_GRAYRECT         = &h00000005&
Const SS_WHITERECT        = &h00000006&
Const SS_BLACKFRAME       = &h00000007&
Const SS_GRAYFRAME        = &h00000008&
Const SS_WHITEFRAME       = &h00000009&
Const SS_ETCHEDHORZ       = &h00000010&
Const SS_SUNKEN           = &h00001000&	' WINVER >= &h0400

' Window Styles

Const WS_DISABLED         = &h08000000&
Const WS_BORDER           = &h00800000&
Const WS_THICKFRAME       = &h00040000&
Const WS_TABSTOP          = &h00010000&

Const C_LEFT = SS_SUNKEN Or SS_LEFT
Const C_CENTER = SS_SUNKEN Or SS_CENTER
Const C_RIGHT  = SS_SUNKEN Or SS_RIGHT

Const C_RB_LEFT = WS_BORDER Or BS_RIGHTBUTTON Or BS_LEFT
Const C_RB_CENTER = WS_BORDER Or BS_RIGHTBUTTON Or BS_CENTER
Const C_RB_RIGHT = WS_BORDER Or BS_RIGHTBUTTON Or BS_RIGHT

Sub Button1_OnClick ()
    Begin Dialog DialogName1 60, 60, 280, 185, "Button Styles", .DlgFunc
        PushButton 5, 10, 60, 32, "This button has a very long caption that wraps twice.", .b, BS_MULTILINE

        Text   5, 50, 60,  2, "", .L, SS_BLACKRECT
        Text   5, 55, 60,  2, "", .L, SS_GRAYRECT
        Text   5, 60, 60,  2, "", .L, SS_WHITERECT
        Text   5, 70, 60,  2, "", .L, SS_BLACKFRAME
        Text   5, 75, 60,  2, "", .L, SS_GRAYFRAME
        Text   5, 80, 60,  2, "", .L, SS_WHITEFRAME
        Text   5, 90, 60,  0, "", .L, SS_ETCHEDHORZ

        Text  75, 10, 40, 12, "Left",   .L, C_LEFT
        Text 125, 10, 40, 12, "Center", .L, C_CENTER
        Text 175, 10, 40, 12, "Right",  .L, C_RIGHT

        PushButton  75, 30, 40, 12, "Left",   .L, BS_LEFT
        PushButton 125, 30, 40, 12, "Center", .L, BS_CENTER
        PushButton 175, 30, 40, 12, "Right",  .L, BS_RIGHT

        CheckBox  75, 50, 40, 12, "Left",   .L, BS_LEFT
        CheckBox 125, 50, 40, 12, "Center", .L, BS_CENTER
        CheckBox 175, 50, 40, 12, "Right",  .L, BS_RIGHT

        OptionGroup .g1
        OptionButton  75, 70, 40, 12, "Left",   .L, BS_LEFT
        OptionButton 125, 70, 40, 12, "Center", .L, BS_CENTER
        OptionButton 175, 70, 40, 12, "Right",  .L, BS_RIGHT

        CheckBox  75, 100, 40, 12, "Left",   .L, C_RB_LEFT
        CheckBox 125, 100, 40, 12, "Center", .L, C_RB_CENTER
        CheckBox 175, 100, 40, 12, "Right",  .L, C_RB_RIGHT

        OptionGroup .g1
        OptionButton  75, 130, 40, 12, "Left",   .L, C_RB_LEFT
        OptionButton 125, 130, 40, 12, "Center", .L, C_RB_CENTER
        OptionButton 175, 130, 40, 12, "Right",  .L, C_RB_RIGHT

        OptionGroup .gr1
            OptionButton 225, 10, 20, 10, "A", .opt, &h1000
            OptionButton 225, 20, 20, 10, "B", .opt, &h1000
            OptionButton 225, 30, 20, 10, "C", .opt, &h1000
            OptionButton 225, 40, 20, 10, "D", .opt, &h1000
            OptionButton 245, 10, 20, 10, "E", .opt, &h1000
            OptionButton 245, 20, 20, 10, "F", .opt, &h1000
            OptionButton 245, 30, 20, 10, "G", .opt, &h1000
            OptionButton 245, 40, 20, 10, "H", .opt, &h1000

        PushButton 225, 60, 30, 30, "Flat", .pb, BS_FLAT

        OptionGroup .grp1
            OptionButton 225, 100, 48, 12, "Option&1"
            OptionButton 225, 110, 48, 12, "Option&2"
        OptionGroup .grp2
            OptionButton 225, 136, 48, 10, "Option&3", .opt, &h1000
            OptionButton 225, 146, 48, 10, "Option&4", .opt, &h1000

        GroupBox 2, 125, 70, 36, "Group"
            CheckBox 5, 100, 48, 10, "Check&A", .Check1
            CheckBox 5, 110, 48, 10, "Check&B", .Check2
            CheckBox 5, 136, 48, 10, "Check&C", .Check3, &h1000
            CheckBox 5, 146, 48, 10, "Check&D", .Check4

        CancelButton 42, 168, 40, 12	
        OKButton 90, 168, 40, 12
        PushButton 140, 168, 40, 12, "&Push Me 1"
        PushButton 190, 168, 40, 12, "Push &Me 2"
    End Dialog
    Dim Dlg1 As DialogName1
'    Dlg1.grp2 = 1
    ' Dialog returns -1 for OK, 0 for Cancel, button # for PushButtons - start w/ 1
    button = Dialog( Dlg1 )
    MsgBox "button: " & button
    If button = 0 Then Exit Sub

'    MsgBox "grp1: " & Dlg1.grp1
'    MsgBox "grp2: " & Dlg1.grp2
End Sub

Function DlgFunc( ControlID$, Action%, SuppValue%)

Select Case Action%
Case 1
	DlgEnable "Check1", 0
	DlgVisible "Check2", 0
Case 2
      If SuppValue > 2 Then
		DlgFunc = 1
	End If
	If ControlID$ = "Check3" Then
	          DlgEnable "Check1"
	          DlgVisible "Check2"
	End If
	If ControlID$ = "Push &Me 2" Then
		Print DlgText(1)
		DlgFocus "Check3"
		MsgBox DlgValue( "Check2" ) 
		DlgEnable "Push &Me 2", 0
		DlgFunc = 1
	End If
End Select

End Function