The PIDL Manager
Before we continue, we
really need to discuss pidlMgr.cls
. This class
is a helper class that we will use to manage functions involving
PIDLs. These helper functions include things like creating, copying,
and deleting PIDLs, getting the last PIDL in a list of PIDLs, getting
the next PIDL in a list of PIDLs, as well as additional functions
that are more specific to our particular namespace
extension.
So add a new class to the project called
pidlMgr.cls
, and let’s start implementing
some of the functionality of this class.
Delete
We
have used three functions from this class so far:
Delete
, Copy
, and
Create
. Delete
is by far
the easiest of the functions to implement. It just wraps a call to
IMalloc::Free
. Delete
looks
like this:
'pidlMgr.cls
Private m_ pMalloc As IMalloc Private Sub Class_Initialize( ) Set m_ pMalloc = GetMalloc End Sub Private Sub Class_Terminate( ) Set m_ pMalloc = Nothing End SubPublic Sub Delete(ByVal pidl As LPITEMIDLIST)
m_ pMalloc.Free pidl
End Sub
Copy
Copy
is used to make a copy of the PIDL:
Public Function Copy(ByVal pidlSource As LPITEMIDLIST) As LPITEMIDLIST Dim pidlTarget As LPITEMIDLIST Dim cbSource As UINT Copy = 0 If (pidlSource = 0) Then Exit Function End If cbSource = GetSize(pidlSource) pidlTarget = m_pMalloc.Alloc(cbSource) If (pidlTarget > 0) Then CopyMemory ByVal pidlTarget, ByVal pidlSource, cbSource Copy = pidlTarget End If End Function
Create
This method is a little more involved, but the reason for this requires some background ...
Get VB Shell Programming now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.