打印本文 打印本文 关闭窗口 关闭窗口
DX: Full Screen GUI Development 1
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2582  更新时间:2009/4/23 16:39:22  文章录入:mintao  责任编辑:mintao
ngle, ByVal Y As Single)

   

    Dim iLp As Integer

   

    If Not (iObjectState = iDisabled) Then

        If iObjectState = iPressed And iObjectType = Btn Then iObjectState = iEnabled

    End If

   

    For iLp = 1 To colChildren.Count

        colChildren(iLp).MouseUp Button, Shift, X, Y

    Next iLp

   

End Sub

 

and add the following to the frmMain form抯 code:

 

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

    Window.MouseDown Button, Shift, X, Y

End Sub

 

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)

    Window.MouseUp Button, Shift, X, Y

End Sub

 

Notice that we only have to call the mouse events for the base window. The class handles calling the events for the controls it contains.

 

So what are we missing? Oh yes, we need to know how to draw the controls. Replace the DrawObject function with the following:

 

Public Function DrawObject(objSurface As DirectDrawSurface7)

   

    Dim clsWindow As clsWindow

    Dim iLp As Integer

    Dim ddsd As DDSURFACEDESC2

    Dim rectBitmap As RECT

    Dim rectObject As RECT

   

    On Error GoTo DrawObjectErr

   

    rectBitmap.Left = iX

    rectBitmap.Right = iX + iWidth

    rectBitmap.Top = iY

    rectBitmap.Bottom = iY + iHeight

   

    Select Case iObjectType

        Case Btn

           

            rectObject.Left = 0

            rectObject.Right = iWidth

            rectObject.Top = 0

            rectObject.Bottom = iHeight

            

            Select Case iObjectState

                Case iDisabled

                    rectObject.Top = iHeight * 2

                    rectObject.Bottom = iHeight * 3

                Case iPressed

                    rectObject.Top = iHeight

                    rectObject.Bottom = iHeight * 2

            End Select

           

        Case ChkBox

           

            rectObject.Left = 0

            rectObject.Right = iWidth

            rectObject.Top = 0

            rectObject.Bottom = iHeight

           

            Select Case iObjectState

                Case iDisabled

                    rectObject.Top = iHeight * 2

                    rectObject.Bottom = iHeight * 3

                Case iChecked

                    rectObject.Top = iHeight

                    rectObject.Bottom = iHeight * 2

                Case iChecked_iDisabled

                    rectObject.Top = iHeight * 3

                    rectObject.Bottom = iHeight * 4

            End Select

       

        Case BaseWindow

            ''''Nothing needed here since we use the base rectangle

    End Select

   

    objSurface.Blt rectBitmap, objBitmap, rectObject, DDBLT_WAIT

   

    For iLp = 1 To colChildren.Count

        colChildren(iLp).DrawObject objSurface

    Next iLp

   

    Exit Function

   

DrawObjectErr:

    Exit Function

   

End Function

 

What抯 Next?

 

The first part of this series is an intro into creating a relatively full-fledged GUI for your game. The next article will deal with some more advanced pieces ?more controls and adding additional properties for the controls, including text properties. If there is anything specific you would like to see, please e-mail me or post on the board for the site where you found this article (if applicable).

 

Feel free to modify this code as you see fit. Hopefully you抣l find a use for it, even though it抯 still in it抯 infant form.

 

See you next time!

上一页  [1] [2] [3] 

打印本文 打印本文 关闭窗口 关闭窗口