Skip to content

Commit f60bba6

Browse files
authored
Add files via upload
1 parent 74259e0 commit f60bba6

File tree

5 files changed

+26
-265
lines changed

5 files changed

+26
-265
lines changed

FileDialogDemo.twinproj

-12.9 KB
Binary file not shown.

ShellControls.twinpack

-12.9 KB
Binary file not shown.

tbShellTree.twinproj

-12.9 KB
Binary file not shown.

ucShellTree.tbcontrol

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,22 @@
6969
"showGrid": true,
7070
"showOutlines": false
7171
},
72-
"__lastUpdateMarker": 1991132022,
72+
"__lastUpdateMarker": 35144478,
73+
"_children": [
74+
{
75+
"Enabled": false,
76+
"Height": 27,
77+
"Index": -1,
78+
"Interval": 1000,
79+
"Left": 10,
80+
"Name": "Timer1",
81+
"Tag": null,
82+
"Top": 13,
83+
"Width": 27,
84+
"_className": "Timer",
85+
"_clsid": "{33AD4F28-6699-11CF-B70C-00AA0060D393}"
86+
}
87+
],
7388
"_className": "UserControl",
7489
"_clsid": "{33AD5010-6699-11CF-B70C-00AA0060D393}"
7590
}

ucShellTree.twin

Lines changed: 10 additions & 264 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Public Class ucShellTree
55
Option Explicit
66

77
Private Const mVersionStr As String = "Shell Tree Control 2.8 R1"
8+
#Region "README"
89
''*********************************************************************************************
910
'
1011
'ucShellTree.twin
@@ -335,7 +336,7 @@ Private Const mVersionStr As String = "Shell Tree Control 2.8 R1"
335336
'* - Technical note: This can be any path string/identifier resolvable by SHCreateItemFromParsingName
336337
'
337338
'*********************************************************************************************
338-
339+
#End Region
339340

340341
'USER OPTIONS
341342
'The following are meant to be toggled based on your preferences:
@@ -346,6 +347,7 @@ Private Const dbg_RaiseEvent As Boolean = True 'Raise DebugMessage event
346347
Private Const dbg_MinLevel As Long = 0& 'Only fire debug statement if iLvl >= this value
347348
'-----------------------------------------------------------------------------------------------
348349

350+
#Region "ProjectDeclares"
349351
Implements IDropTarget
350352
Implements IOleInPlaceActiveObjectVB
351353
Implements IObjectSafety
@@ -661,7 +663,9 @@ Private Const m_def_lRaiseHover As Long = 2500&
661663
Private bTopLostFocus As Boolean
662664
Private bHasFocus As Boolean
663665
Private hBmpBack As LongPtr
666+
#End Region
664667

668+
#Region "APIDeclares"
665669
'------------------------------------------------------------
666670
'BEGIN STANDARD APIs AND SYSTEM CONSTANTS
667671

@@ -1589,6 +1593,7 @@ Private Type SHFILEOPSTRUCT
15891593
hNameMaps As LongPtr
15901594
lpszProgressTitle As LongPtr
15911595
End Type
1596+
#End Region
15921597

15931598
#Region "IPAO"
15941599

@@ -3965,16 +3970,6 @@ If (psi Is Nothing) = False Then
39653970
End If
39663971
End Function
39673972

3968-
'Public Sub TestLink()
3969-
'DebugAppend "testlink " & TVEntries(gCurSelIdx).sFullPath
3970-
'Dim sz As String
3971-
'Dim si As IShellItem
3972-
'SHCreateItemFromParsingName StrPtr(TVEntries(gCurSelIdx).sFullPath), Nothing, IID_IShellItem, si
3973-
'
3974-
'sz = GetLinkTarget(si)
3975-
'MessageBoxW UserControl.hWnd, StrPtr(sz), 0&, 1&
3976-
'
3977-
'End Sub
39783973
Private Function GetLinkTarget(siLink As IShellItem) As String
39793974
'<EhHeader>
39803975
On Error GoTo e0
@@ -7535,263 +7530,14 @@ Private Function pvShiftState() As Integer
75357530
pvShiftState = lS
75367531
End Function
75377532

7538-
' === Call InterfaceMethod ===============================================
7539-
' This function was made by ANDRay, wich can be found in http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId=72856
7540-
'Private Function CallInterface(ByVal pInterface As Long, ByVal Member As Long, ByVal ParamsCount As Long, Optional ByVal p1 As Long = 0, Optional ByVal p2 As Long = 0, Optional ByVal p3 As Long = 0, Optional ByVal p4 As Long = 0, Optional ByVal p5 As Long = 0, Optional ByVal p6 As Long = 0, Optional ByVal p7 As Long = 0, Optional ByVal p8 As Long = 0, Optional ByVal p9 As Long = 0, Optional ByVal p10 As Long = 0) As Long
7541-
' Dim i As Long, t As Long
7542-
' Dim hGlobal As Long, hGlobalOffset As Long
7543-
'
7544-
' If ParamsCount < 0 Then Err.Raise 5 'invalid call
7545-
' If pInterface = 0 Then Err.Raise 5
7546-
'
7547-
' ' 5 Bytes por parametro (4 bytes + PUSH)
7548-
' ' 5 Bytes = 1 push + Puntero a interfaz
7549-
' hGlobal = GlobalAlloc(GMEM_FIXED, 5 * ParamsCount + 5 + 5 + 3 + 1)
7550-
' If hGlobal = 0 Then Err.Raise 7 'insuff. memory
7551-
' hGlobalOffset = hGlobal
7552-
'
7553-
' If ParamsCount > 0 Then
7554-
' t = VarPtr(p1)
7555-
' For i = ParamsCount - 1 To 0 Step -1
7556-
' Call PutMem2(hGlobalOffset, asmPUSH_imm32)
7557-
' hGlobalOffset = hGlobalOffset + 1
7558-
' Call GetMem4(t + i * 4, hGlobalOffset)
7559-
' hGlobalOffset = hGlobalOffset + 4
7560-
' Next
7561-
' End If
7562-
'
7563-
' ' PUSH y ponemos el puntero a la interfas
7564-
' Call PutMem2(hGlobalOffset, asmPUSH_imm32)
7565-
' hGlobalOffset = hGlobalOffset + 1
7566-
' Call PutMem4(hGlobalOffset, pInterface)
7567-
' hGlobalOffset = hGlobalOffset + 4
7568-
'
7569-
' ' Llamamos
7570-
' Call PutMem2(hGlobalOffset, asmCALL_rel32)
7571-
' hGlobalOffset = hGlobalOffset + 1
7572-
' Call GetMem4(pInterface, VarPtr(t)) 'äåðåôåðåíñ: íàõîäèì ïîëîæåíèå vTable
7573-
' Call GetMem4(t + Member * 4, VarPtr(t)) 'ñìåùåíèå ïî vTable, ïîñëå ÷åãî äåðåôåðåíñ îíîãî
7574-
' Call PutMem4(hGlobalOffset, t - hGlobalOffset - 4)
7575-
' hGlobalOffset = hGlobalOffset + 4
7576-
'
7577-
' Call PutMem4(hGlobalOffset, &H10C2&) 'ret 0x0010
7578-
' CallInterface = CallWindowProcA(hGlobal, 0, 0, 0, 0)
7579-
' Call GlobalFree(hGlobal)
7580-
'End Function
7581-
7582-
'----------------------------------------------------------------------------------------
7583-
' IOLEInPlaceActiveObject interface
7584-
'----------------------------------------------------------------------------------------
7585-
Private Sub pvInitIPAO()
7586-
' Dim uiid As UUID
7587-
' ptrMe = ObjPtr(Me)
7588-
' With m_uIPAO
7589-
' .lpVTable = GetVTable
7590-
' Call IIDFromString(StrPtr(szIID_IOleInPlaceActive), uiid)
7591-
' Call CallInterface(ptrMe, ucst_IUnknown_Exports.QueryInterface, 2, VarPtr(uiid), VarPtr(.IPAOReal))
7592-
' .ThisPointer = VarPtr(m_uIPAO)
7593-
' End With
7594-
End Sub
7533+
75957534

75967535
Private Sub pvSetIPAO()
75977536
ActivateIPAO Me
7598-
'DebugAppend "pvSetIPAO", 3
7599-
' Const IOleObject_GetClientSite As Long = 4 ' 2 From IUnknown + 2º Ordinal
7600-
' Const IOleObject_DoVerb As Long = 11
7601-
' Const IOleInPlaceSite_GetWindowContext As Long = 8 ' 2 from IUnknown + 2 IOleWindow + 4º Ordinal
7602-
' Const IOleInPlaceFrame_SetActiveObject As Long = 8 ' 2 from IUnknown + 2 IOleWindow + 4º Ordinal
7603-
' Const IOleInPlaceUIWindow_SetActiveObject As Long = 8 ' IOleInPlaceFrame inherits from IOleInPlaceUIWindow
7604-
'
7605-
' Const OLEIVERB_UIACTIVATE As Long = -4
7606-
' Dim uiid As UUID, lResult As Long
7607-
' Dim pOleObject As Long 'IOleObject
7608-
' Dim pOleInPlaceSite As Long 'IOleInPlaceSite
7609-
' Dim pOleInPlaceFrame As Long 'IOleInPlaceFrame
7610-
' Dim pOleInPlaceUIWindow As Long 'IOleInPlaceUIWindow
7611-
' Dim rcPos As RECT
7612-
' Dim rcClip As RECT
7613-
' Dim uFrameInfo As OLEINPLACEFRAMEINFO
7614-
'
7615-
' On Error GoTo e0
7616-
' Call IIDFromString(StrPtr(szIID_IOleObject), uiid)
7617-
' Call CallInterface(ptrMe, ucst_IUnknown_Exports.QueryInterface, 2, VarPtr(uiid), VarPtr(pOleObject))
7618-
' Call CallInterface(pOleObject, IOleObject_GetClientSite, 1, VarPtr(pOleInPlaceSite))
7619-
'
7620-
' If pOleInPlaceSite <> 0 Then
7621-
' Call IIDFromString(StrPtr(szIID_IOleInPlaceSite), uiid)
7622-
' Call CallInterface(pOleInPlaceSite, ucst_IUnknown_Exports.QueryInterface, 2, VarPtr(uiid), VarPtr(pOleInPlaceSite))
7623-
' Call CallInterface(pOleInPlaceSite, IOleInPlaceSite_GetWindowContext, 5, VarPtr(pOleInPlaceFrame), VarPtr(pOleInPlaceUIWindow), VarPtr(rcPos), VarPtr(rcClip), VarPtr(uFrameInfo))
7624-
'
7625-
'' DebugAppend "Window=" & pOleInPlaceUIWindow & ",Frame=" & pOleInPlaceFrame & ",rc={" & rcPos.Left & "," & rcPos.Right & "," & rcPos.Top & "," & rcPos.Bottom & "}", 2
7626-
' If pOleInPlaceFrame <> 0 Then
7627-
' ' The original was pOleInPlaceFrame.SetActiveObject but IOleInPlaceUIWindow has the definition :/
7628-
' Call CallInterface(pOleInPlaceFrame, IOleInPlaceFrame_SetActiveObject, 2, m_uIPAO.ThisPointer, StrPtr(vbNullString))
7629-
' End If
7630-
' If pOleInPlaceUIWindow <> 0 Then '-- And Not m_bMouseActivate
7631-
' Call CallInterface(pOleInPlaceUIWindow, IOleInPlaceUIWindow_SetActiveObject, 2, VarPtr(m_uIPAO.ThisPointer), StrPtr(vbNullString))
7632-
' Else
7633-
' Call CallInterface(pOleObject, IOleObject_DoVerb, 6, OLEIVERB_UIACTIVATE, 0, pOleInPlaceSite, 0, UserControl.hWnd, VarPtr(rcPos))
7634-
' End If
7635-
' End If
7636-
'
7637-
' On Error GoTo 0
7638-
' Exit Sub
7639-
'e0:
7640-
' DebugAppend "pvSetIPAO.Error->" & Err.Description & "," & Err.Number, 4
7641-
' Resume Next
7642-
76437537
End Sub
76447538

7645-
'Private Function pvTranslateAccel(pMsg As Msg) As Boolean
7646-
'
7647-
' Const IOleObject_GetClientSite As Long = 4 ' 2 From IUnknown + 2º Ordinal
7648-
' Dim pOleObject As Long 'IOleObject
7649-
' Dim pOleControlSite As Long 'IOleControlSite
7650-
' Dim uiid As UUID, hEdit As Long
7651-
'
7652-
' On Error Resume Next
7653-
' Select Case pMsg.message
7654-
' Case WM_KEYDOWN, WM_KEYUP
7655-
' Select Case pMsg.wParam
7656-
' Case vbKeyTab
7657-
' DebugAppend "vbKeyTab"
7658-
' If (pvShiftState() And vbCtrlMask) Then
7659-
' Call IIDFromString(StrPtr(szIID_IOleObject), uiid)
7660-
' Call CallInterface(ptrMe, ucst_IUnknown_Exports.QueryInterface, 2, VarPtr(uiid), VarPtr(pOleObject))
7661-
' Call CallInterface(pOleObject, IOleObject_GetClientSite, 1, VarPtr(pOleControlSite))
7662-
' If pOleControlSite Then
7663-
' Call IIDFromString(StrPtr(szIID_IOleControlSite), uiid)
7664-
' Call CallInterface(pOleControlSite, ucst_IUnknown_Exports.QueryInterface, 2, VarPtr(uiid), VarPtr(pOleControlSite))
7665-
' Call CallInterface(pOleControlSite, 7, 2, VarPtr(pMsg), pvShiftState() And vbShiftMask)
7666-
' End If
7667-
' End If
7668-
' pvTranslateAccel = False
7669-
' Case vbKeyUp, vbKeyDown, vbKeyLeft, vbKeyRight, vbKeyHome, vbKeyEnd, vbKeyPageDown, vbKeyPageUp
7670-
' DebugAppend "vbArrowKey"
7671-
'' hEdit = pvEdithWnd()
7672-
' If hEdit Then
7673-
' Call SendMessage(hLEEdit, pMsg.message, pMsg.wParam, ByVal pMsg.lParam)
7674-
' Else
7675-
' Call SendMessage(hTVD, pMsg.message, pMsg.wParam, ByVal pMsg.lParam)
7676-
' End If
7677-
' pvTranslateAccel = True
7678-
' End Select
7679-
' End Select
7680-
' On Error GoTo 0
7681-
'End Function
7682-
'
7683-
'Private Function GetVTable() As Long
7684-
' ' Set up the vTable for the interface and return a pointer to it
7685-
' If (m_IPAOVTable(0) = 0) Then
7686-
' m_IPAOVTable(0) = scb_SetCallbackAddr(2, 12, Me) ' QueryInterface
7687-
' m_IPAOVTable(1) = scb_SetCallbackAddr(1, 14, Me) ' Addref
7688-
' m_IPAOVTable(2) = scb_SetCallbackAddr(1, 13, Me) ' Release
7689-
' m_IPAOVTable(3) = scb_SetCallbackAddr(2, 11, Me) ' GetWindow
7690-
' m_IPAOVTable(4) = scb_SetCallbackAddr(2, 10, Me) ' ContextSensitiveHelp
7691-
' m_IPAOVTable(5) = scb_SetCallbackAddr(2, 9, Me) ' TranslateAccelerator
7692-
' m_IPAOVTable(6) = scb_SetCallbackAddr(2, 8, Me) ' OnFrameWindowActivate
7693-
' m_IPAOVTable(7) = scb_SetCallbackAddr(2, 7, Me) ' OnDocWindowActivate
7694-
' m_IPAOVTable(8) = scb_SetCallbackAddr(4, 6, Me) ' ResizeBorder
7695-
' m_IPAOVTable(9) = scb_SetCallbackAddr(2, 5, Me) ' EnableModeless
7696-
' '--- init guid
7697-
' With IID_IOleInPlaceActiveObject
7698-
' .Data1 = &H117&
7699-
' .Data4(0) = &HC0
7700-
' .Data4(7) = &H46
7701-
' End With
7702-
' End If
7703-
' GetVTable = VarPtr(m_IPAOVTable(0))
7704-
'End Function
7705-
''=======================================================================================
7706-
''SUBCLASSING/IPAO PROCEDURES
7707-
''WARNING: Do not add any additional procedures or otherwise alter the order of the following
7708-
'' as they're used with self-subclass/self-callback code-- order dependent!
7709-
''
7710-
'
7711-
'Private Function pvIPAO_AddRef(This As IPAOHookStruct) As Long
7712-
' pvIPAO_AddRef = CallInterface(This.IPAOReal, ucst_IUnknown_Exports.AddRef, 0)
7713-
'End Function
7714-
'
7715-
'Private Function pvIPAO_Release(This As IPAOHookStruct) As Long
7716-
' pvIPAO_Release = CallInterface(This.IPAOReal, ucst_IUnknown_Exports.Release, 0)
7717-
'End Function
7718-
'
7719-
'Private Function pvIPAO_QueryInterface(This As IPAOHookStruct, riid As UUID, pvObj As Long) As Long
7720-
' If (IsEqualGUID(riid, IID_IOleInPlaceActiveObject)) Then
7721-
' pvObj = VarPtr(This)
7722-
' Call pvIPAO_AddRef(This)
7723-
' pvIPAO_QueryInterface = 0
7724-
' Else
7725-
' pvIPAO_QueryInterface = CallInterface(This.IPAOReal, ucst_IUnknown_Exports.QueryInterface, 2, VarPtr(riid), VarPtr(pvObj))
7726-
' End If
7727-
'End Function
7728-
'
7729-
'Private Function pvIPAO_GetWindow(This As IPAOHookStruct, phwnd as LongPtr) As Long
7730-
' pvIPAO_GetWindow = CallInterface(This.IPAOReal, ucst_IPAO_Exports.GetWindow, 1, VarPtr(phwnd))
7731-
'End Function
7732-
'
7733-
'Private Function pvIPAO_ContextSensitiveHelp(This As IPAOHookStruct, ByVal fEnterMode As Long) As Long
7734-
' pvIPAO_ContextSensitiveHelp = CallInterface(This.IPAOReal, ucst_IPAO_Exports.ContextSensitiveHelp, 1, VarPtr(fEnterMode))
7735-
'End Function
7736-
'
7737-
'Private Function pvIPAO_TranslateAccelerator(This As IPAOHookStruct, lpMsg As Msg) As Long
7738-
' ' Check if we want to override the handling of this key code:
7739-
' If (pvTranslateAccel(lpMsg)) Then
7740-
' pvIPAO_TranslateAccelerator = S_OK
7741-
' Else
7742-
' pvIPAO_TranslateAccelerator = CallInterface(This.IPAOReal, ucst_IPAO_Exports.TranslateAccelerator, 1, VarPtr(lpMsg))
7743-
' End If
7744-
'End Function
7745-
'
7746-
'Private Function pvIPAO_OnFrameWindowActivate(This As IPAOHookStruct, ByVal fActivate As Long) As Long
7747-
' pvIPAO_OnFrameWindowActivate = CallInterface(This.IPAOReal, ucst_IPAO_Exports.OnFrameWindowActivate, 1, VarPtr(fActivate))
7748-
'End Function
7749-
'
7750-
'Private Function pvIPAO_OnDocWindowActivate(This As IPAOHookStruct, ByVal fActivate As Long) As Long
7751-
' pvIPAO_OnDocWindowActivate = CallInterface(This.IPAOReal, ucst_IPAO_Exports.OnDocWindowActivate, 1, VarPtr(fActivate))
7752-
'End Function
7753-
'
7754-
'Private Function pvIPAO_ResizeBorder(This As IPAOHookStruct, prcBorder As RECT, ByVal puiWindow As Long, ByVal fFrameWindow As Long) As Long
7755-
' pvIPAO_ResizeBorder = CallInterface(This.IPAOReal, ucst_IPAO_Exports.ResizeBorder, 3, VarPtr(prcBorder), puiWindow, VarPtr(fFrameWindow))
7756-
'End Function
7757-
'
7758-
'Private Function pvIPAO_EnableModeless(This As IPAOHookStruct, ByVal fEnable As Long) As Long
7759-
' pvIPAO_EnableModeless = CallInterface(This.IPAOReal, ucst_IPAO_Exports.EnableModeless, 1, VarPtr(fEnable))
7760-
'End Function
7761-
77627539
Private Sub IOleInPlaceActiveObjectVB_TranslateAccelerator(ByRef Handled As Boolean, ByRef RetVal As Long, ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr, ByVal Shift As Long) Implements IOleInPlaceActiveObjectVB.TranslateAccelerator
7763-
'If wMsg = WM_KEYDOWN Or wMsg = WM_KEYUP Then
7764-
' Dim KeyCode As Integer, IsInputKey As Boolean
7765-
' KeyCode = wParam And &HFF&
7766-
' If wMsg = WM_KEYDOWN Then
7767-
' RaiseEvent PreviewKeyDown(KeyCode, IsInputKey)
7768-
' ElseIf wMsg = WM_KEYUP Then
7769-
' RaiseEvent PreviewKeyUp(KeyCode, IsInputKey)
7770-
' End If
7771-
' Select Case KeyCode
7772-
' Case vbKeyUp, vbKeyDown, vbKeyLeft, vbKeyRight, vbKeyPageDown, vbKeyPageUp, vbKeyHome, vbKeyEnd, vbKeyReturn, vbKeyEscape
7773-
' If ListViewHandle <> 0 Then
7774-
' If ListViewFilterEditHandle = 0 Then
7775-
' If ListViewLabelInEdit = True Then
7776-
' SendMessage Me.hWndLabelEdit, wMsg, wParam, ByVal lParam
7777-
' Else
7778-
' If (KeyCode = vbKeyReturn Or KeyCode = vbKeyEscape) And IsInputKey = False Then Exit Sub
7779-
' SendMessage ListViewHandle, wMsg, wParam, ByVal lParam
7780-
' End If
7781-
' Else
7782-
' SendMessage ListViewFilterEditHandle, wMsg, wParam, ByVal lParam
7783-
' End If
7784-
' Handled = True
7785-
' End If
7786-
' Case vbKeyTab
7787-
' If IsInputKey = True Then
7788-
' If ListViewHandle <> 0 Then
7789-
' SendMessage ListViewHandle, wMsg, wParam, ByVal lParam
7790-
' Handled = True
7791-
' End If
7792-
' End If
7793-
' End Select
7794-
'End If
7540+
77957541
Dim pMsg As MSG
77967542
pMsg.hWnd = hwnd
77977543
pMsg.wParam = wParam
@@ -8646,9 +8392,9 @@ Select Case uMsg
86468392

86478393
End If
86488394
Case NM_CLICK
8649-
Debug.Print "NM_CLICK"
8395+
DebugAppend "NM_CLICK"
86508396
If nmtv.hdr.hWndFrom = hTVD Then
8651-
Debug.Print "NM_CLICK hTVD"
8397+
DebugAppend "NM_CLICK hTVD"
86528398
' SetFocus UserControl.ContainerHwnd
86538399
' SetFocus hTVD
86548400
Call GetCursorPos(PT)

0 commit comments

Comments
 (0)