Dynamically draws an add-in toolbar button.
NOTE: This method does not work in Windows Vista and later Windows operating systems.
Syntax
Parameters
- lCmdID
- Command ID passed to IEdmCmdMgr5::AddCmd during add-in registration
- hDC
- Handle of the device context to draw on
- poDestRect
- EdmRect structure; rectangle within which to draw
- eState
- State of the button image to draw as defined in EdmButtonState
- plRetBackgroundColor
- RGB value of a transparent color
Example
Visual Basic sample code showing how to dynamically draw a toolbar button
- Add the toolbar button command in the IEdmAddIn5::GetAddInInfo implementation:
poCmdMgr.AddCmd 1000, "First command", EdmMenu_HasToolbarButton Or EdmMenu_OwnerDrawToolbarButton, "This is the first command", "First command", -1, -1
- At the top of your class implementation, add declarations of the Win32 GDI functions that you want to use (read more about this in the Visual Basic online help):
Private Declare Sub LineTo Lib "Gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long)
Private Declare Sub MoveToEx Lib "Gdi32" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, ByVal OldPnt As Long)
Private Declare Sub Arc Lib "Gdi32" (ByVal hDC As Long, _
ByVal x1 As Long, ByVal y1 As Long, _
ByVal x2 As Long, ByVal y2 As Long, _
ByVal xstart As Long, ByVal ystart As Long, _
ByVal xend As Long, ByVal yend As Long)
- Implement IEdmAddInDrawButton5::DrawToolbarButton (called by SOLIDWORKS PDM Professional):
Private Sub IEdmAddInDrawButton5_DrawToolbarButton(ByVal lCmdID As Long, ByVal hDC As Long, poDestRect As EdmRect, ByVal eState As EdmButtonState, plRetBackgroundColor As Long)
On Error GoTo ErrHand
If eState = BState_Cold Then
'Draw a cross using the default pen
MoveToEx hDC, poDestRect.mlLeft, poDestRect.mlTop, 0
LineTo hDC, poDestRect.mlRight, poDestRect.mlBottom
MoveToEx hDC, poDestRect.mlLeft, poDestRect.mlBottom, 0
LineTo hDC, poDestRect.mlRight, poDestRect.mlTop
Else
'Draw a circle using the default pen
Arc hDC, poDestRect.mlLeft, poDestRect.mlTop, poDestRect.mlRight, poDestRect.mlBottom, _
poDestRect.mlLeft + (poDestRect.mlRight - poDestRect.mlLeft) / 2, poDestRect.mlTop, _
poDestRect.mlLeft + (poDestRect.mlRight - poDestRect.mlLeft) / 2, poDestRect.mlTop
End If
Exit Sub
ErrHand:
Dim errnum As String
errnum = Err.Number
MsgBox "Error drawing toolbar button!" + vbLf + Err.Description + vbLf + errnum
End Sub
Remarks
See Also
Availability
Version 5.2 of SOLIDWORKS PDM Professional