| 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] |