@@ -2472,7 +2472,7 @@ Private Const m_sVerbRedo As String = "redo" 'For Ctrl+Y redo
24722472'
24732473'=================================================================================
24742474'
2475- '---------------------------------------------------------------------------------
2475+ '--------------------------------------------------------------------------------- ' close for each entry to ensure file buffers flushed
24762476#End Region
24772477
24782478#Region "APIDeclares"
@@ -6982,12 +6982,6 @@ mDispSecZn = mDefDispSecZn
69826982pvCreate
69836983End Sub
69846984
6985- Private Sub UserControl_Show() Handles UserControl.Show
6986- '-- Initialize IOLEInPlaceActiveObject
6987- Call pvInitIPAO
6988- UserControl_Resize
6989- End Sub
6990-
69916985Private Function ExplorerSettingEnabled(lSetting As SFS_MASK) As Boolean
69926986Dim lintg As Integer
69936987Call SHGetSettings(lintg, lSetting)
@@ -14706,6 +14700,7 @@ End Sub
1470614700 ReDim ic(UBound(tButtonCaps))
1470714701 For i = 0 To UBound(tButtonCaps)
1470814702 hImg = ResIconTohIcon(CStr(tButtonIcons(i)), 16, 16)
14703+
1470914704 ic(i) = ImageList_AddIcon(himlFooter, hImg)
1471014705 Next i
1471114706 SendMessage hLVS, LVM_SETIMAGELIST, LVSIL_FOOTER, ByVal himlFooter
@@ -38229,150 +38224,16 @@ End Function
3822938224 pvShiftState = lS
3823038225 End Function
3823138226
38232- ' === Call InterfaceMethod ===============================================
38233- ' This function was made by ANDRay, wich can be found in http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?lngWId=1&txtCodeId=72856
38234- ' 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
38235- ' Dim i As Long, t As Long
38236- ' Dim hGlobal As Long, hGlobalOffset As Long
38237-
38238- ' If ParamsCount < 0 Then Err.Raise 5 'invalid call
38239- ' If pInterface = 0 Then Err.Raise 5
38240-
38241- ' ' 5 Bytes por parametro (4 bytes + PUSH)
38242- ' ' 5 Bytes = 1 push + Puntero a interfaz
38243- ' hGlobal = GlobalAlloc(GMEM_FIXED, 5 * ParamsCount + 5 + 5 + 3 + 1)
38244- ' If hGlobal = 0 Then Err.Raise 7 'insuff. memory
38245- ' hGlobalOffset = hGlobal
38246-
38247- ' If ParamsCount > 0 Then
38248- ' t = VarPtr(p1)
38249- ' For i = ParamsCount - 1 To 0 Step -1
38250- ' Call PutMem2(hGlobalOffset, asmPUSH_imm32)
38251- ' hGlobalOffset = hGlobalOffset + 1
38252- ' Call GetMem4(t + i * 4, hGlobalOffset)
38253- ' hGlobalOffset = hGlobalOffset + 4
38254- ' Next
38255- ' End If
38256-
38257- ' ' PUSH y ponemos el puntero a la interfas
38258- ' Call PutMem2(hGlobalOffset, asmPUSH_imm32)
38259- ' hGlobalOffset = hGlobalOffset + 1
38260- ' Call PutMem4(hGlobalOffset, pInterface)
38261- ' hGlobalOffset = hGlobalOffset + 4
38262-
38263- ' ' Llamamos
38264- ' Call PutMem2(hGlobalOffset, asmCALL_rel32)
38265- ' hGlobalOffset = hGlobalOffset + 1
38266- ' Call GetMem4(pInterface, VarPtr(t)) 'äåðåôåðåíñ: íàõîäèì ïîëîæåíèå vTable
38267- ' Call GetMem4(t + Member * 4, VarPtr(t)) 'ñìåùåíèå ïî vTable, ïîñëå ÷åãî äåðåôåðåíñ îíîãî
38268- ' Call PutMem4(hGlobalOffset, t - hGlobalOffset - 4)
38269- ' hGlobalOffset = hGlobalOffset + 4
38270-
38271- ' Call PutMem4(hGlobalOffset, &H10C2&) 'ret 0x0010
38272- ' CallInterface = CallWindowProcA(hGlobal, 0, 0, 0, 0)
38273- ' Call GlobalFree(hGlobal)
38274- ' End Function
38275-
38276- '----------------------------------------------------------------------------------------
38277- ' IOLEInPlaceActiveObject interface
38278- '----------------------------------------------------------------------------------------
38279- Private Sub pvInitIPAO()
38280- ' If bIPInit = False Then
38281- ' bIPInit = True
38282- ' Dim uiid As UUID
38283- ' ptrMe = ObjPtr(Me)
38284- ' With m_uIPAO
38285- ' .lpVTable = GetVTable
38286- ' Call IIDFromString(StrPtr(sIID_IOleInPlaceActive), uiid)
38287- ' Call CallInterface(ptrMe, IUnknown_Exports.QueryInterface, 2, VarPtr(uiid), VarPtr(.IPAOReal))
38288- ' .ThisPointer = VarPtr(m_uIPAO)
38289- ' End With
38290- ' End If
38291- End Sub
38227+
3829238228
3829338229 Private Sub pvSetIPAO()
3829438230 DebugAppend "pvSetIPAO", 3
3829538231 ActivateIPAO Me
38296- 'Exit Sub
38297- ' Const IOleObject_GetClientSite As Long = 4 ' 2 From IUnknown + 2º Ordinal
38298- ' Const IOleObject_DoVerb As Long = 11
38299- ' Const IOleInPlaceSite_GetWindowContext As Long = 8 ' 2 from IUnknown + 2 IOleWindow + 4º Ordinal
38300- ' Const IOleInPlaceFrame_SetActiveObject As Long = 8 ' 2 from IUnknown + 2 IOleWindow + 4º Ordinal
38301- ' Const IOleInPlaceUIWindow_SetActiveObject As Long = 8 ' IOleInPlaceFrame inherits from IOleInPlaceUIWindow
38302-
38303- ' Const OLEIVERB_UIACTIVATE As Long = -4
38304- ' Dim uiid As UUID, lResult As Long
38305- ' Dim pOleObject As Long 'IOleObject
38306- ' Dim pOleInPlaceSite As Long 'IOleInPlaceSite
38307- ' Dim pOleInPlaceFrame As Long 'IOleInPlaceFrame
38308- ' Dim pOleInPlaceUIWindow As Long 'IOleInPlaceUIWindow
38309- ' Dim rcPos As RECT
38310- ' Dim rcClip As RECT
38311- ' Dim uFrameInfo As OLEINPLACEFRAMEINFO
38312-
38313- ' On Error GoTo e0
38314- ' Call IIDFromString(StrPtr(sIID_IOleObject), uiid)
38315- ' Call CallInterface(ptrMe, IUnknown_Exports.QueryInterface, 2, VarPtr(uiid), VarPtr(pOleObject))
38316- ' Call CallInterface(pOleObject, IOleObject_GetClientSite, 1, VarPtr(pOleInPlaceSite))
38317-
38318- ' If pOleInPlaceSite <> 0 Then
38319- ' Call IIDFromString(StrPtr(sIID_IOleInPlaceSite), uiid)
38320- ' Call CallInterface(pOleInPlaceSite, IUnknown_Exports.QueryInterface, 2, VarPtr(uiid), VarPtr(pOleInPlaceSite))
38321- ' Call CallInterface(pOleInPlaceSite, IOleInPlaceSite_GetWindowContext, 5, VarPtr(pOleInPlaceFrame), VarPtr(pOleInPlaceUIWindow), VarPtr(rcPos), VarPtr(rcClip), VarPtr(uFrameInfo))
38322-
38323- ' DebugAppend "Window=" & pOleInPlaceUIWindow & ",Frame=" & pOleInPlaceFrame & ",rc={" & rcPos.Left & "," & rcPos.Right & "," & rcPos.Top & "," & rcPos.Bottom & "}", 2
38324- ' If pOleInPlaceFrame <> 0 Then
38325- ' ' The original was pOleInPlaceFrame.SetActiveObject but IOleInPlaceUIWindow has the definition :/
38326- ' Call CallInterface(pOleInPlaceFrame, IOleInPlaceFrame_SetActiveObject, 2, m_uIPAO.ThisPointer, StrPtr(vbNullString))
38327- ' End If
38328- ' If pOleInPlaceUIWindow <> 0 Then '-- And Not m_bMouseActivate
38329- ' Call CallInterface(pOleInPlaceUIWindow, IOleInPlaceUIWindow_SetActiveObject, 2, VarPtr(m_uIPAO.ThisPointer), StrPtr(vbNullString))
38330- ' Else
38331- ' Call CallInterface(pOleObject, IOleObject_DoVerb, 6, OLEIVERB_UIACTIVATE, 0, pOleInPlaceSite, 0, UserControl.hWnd, VarPtr(rcPos))
38332- ' End If
38333- ' End If
38334-
38335- ' On Error GoTo 0
38336-
38337- ' Exit Sub
38338- ' e0:
38339- ' DebugAppend "pvSetIPAO.Error->" & Err.Description & "," & Err.Number, 4
38340- ' Resume Next
38232+
3834138233 End Sub
3834238234
3834338235 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
38344- 'If wMsg = WM_KEYDOWN Or wMsg = WM_KEYUP Then
38345- ' Dim KeyCode As Integer, IsInputKey As Boolean
38346- ' KeyCode = wParam And &HFF&
38347- ' If wMsg = WM_KEYDOWN Then
38348- ' RaiseEvent PreviewKeyDown(KeyCode, IsInputKey)
38349- ' ElseIf wMsg = WM_KEYUP Then
38350- ' RaiseEvent PreviewKeyUp(KeyCode, IsInputKey)
38351- ' End If
38352- ' Select Case KeyCode
38353- ' Case vbKeyUp, vbKeyDown, vbKeyLeft, vbKeyRight, vbKeyPageDown, vbKeyPageUp, vbKeyHome, vbKeyEnd, vbKeyReturn, vbKeyEscape
38354- ' If ListViewHandle <> 0 Then
38355- ' If ListViewFilterEditHandle = 0 Then
38356- ' If ListViewLabelInEdit = True Then
38357- ' SendMessage Me.hWndLabelEdit, wMsg, wParam, ByVal lParam
38358- ' Else
38359- ' If (KeyCode = vbKeyReturn Or KeyCode = vbKeyEscape) And IsInputKey = False Then Exit Sub
38360- ' SendMessage ListViewHandle, wMsg, wParam, ByVal lParam
38361- ' End If
38362- ' Else
38363- ' SendMessage ListViewFilterEditHandle, wMsg, wParam, ByVal lParam
38364- ' End If
38365- ' Handled = True
38366- ' End If
38367- ' Case vbKeyTab
38368- ' If IsInputKey = True Then
38369- ' If ListViewHandle <> 0 Then
38370- ' SendMessage ListViewHandle, wMsg, wParam, ByVal lParam
38371- ' Handled = True
38372- ' End If
38373- ' End If
38374- ' End Select
38375- 'End If
38236+
3837638237 Dim pMsg As MSG
3837738238 pMsg.hWnd = hwnd
3837838239 pMsg.wParam = wParam
@@ -38434,29 +38295,6 @@ End Function
3843438295 On Error GoTo 0
3843538296 End Function
3843638297
38437- ' Private Function GetVTable() As Long
38438- ' ' Set up the vTable for the interface and return a pointer to it
38439- ' If (m_IPAOVTable(0) = 0) Then
38440- ' m_IPAOVTable(1) = scb_SetCallbackAddr(1, 34, Me) ' Addref
38441- ' m_IPAOVTable(2) = scb_SetCallbackAddr(1, 33, Me) ' Release
38442- ' m_IPAOVTable(0) = scb_SetCallbackAddr(2, 32, Me) ' QueryInterface
38443- ' m_IPAOVTable(3) = scb_SetCallbackAddr(2, 31, Me) ' GetWindow
38444- ' m_IPAOVTable(4) = scb_SetCallbackAddr(2, 30, Me) ' ContextSensitiveHelp
38445- ' m_IPAOVTable(5) = scb_SetCallbackAddr(2, 29, Me) ' TranslateAccelerator
38446- ' m_IPAOVTable(6) = scb_SetCallbackAddr(2, 28, Me) ' OnFrameWindowActivate
38447- ' m_IPAOVTable(7) = scb_SetCallbackAddr(2, 27, Me) ' OnDocWindowActivate
38448- ' m_IPAOVTable(8) = scb_SetCallbackAddr(4, 26, Me) ' ResizeBorder
38449- ' m_IPAOVTable(9) = scb_SetCallbackAddr(2, 25, Me) ' EnableModeless
38450- ' '--- init guid
38451- ' ' With sIID_IOleInPlaceActiveObject
38452- ' ' .Data1 = &H117&
38453- ' ' .Data4(0) = &HC0
38454- ' ' .Data4(7) = &H46
38455- ' ' End With
38456- ' End If
38457- ' GetVTable = VarPtr(m_IPAOVTable(0))
38458- ' End Function
38459-
3846038298
3846138299 #End Region
3846238300
@@ -38492,68 +38330,16 @@ End Function
3849238330 '@22: CBDTWndProc - Details Combobox, for focus
3849338331 '@23: DTSWndProc - Detail Sizer proc, to restrict to y-axis movement only
3849438332 '@24: CtlBoxWndProc - Control box proc for Up/View/Bkm/StdBackFwd button notifications
38495- '@25-34: IPAO
3849638333
3849738334 'If you subclass something else or create a new callback, add it above @20 as ordinal 21, not
3849838335 'at the bottom after @1. The sequence in place must not be changed.
3849938336 '--------
3850038337
38338+ 'Note: This twinBASIC port is not sensitive to the order or location at this time, but best not
38339+ ' to change it or add code after it for future compatibility reasons.
3850138340
3850238341
3850338342
38504- '@34
38505- ' Private Function pvIPAO_AddRef(This As IPAOHookStruct) As Long
38506- ' pvIPAO_AddRef = CallInterface(This.IPAOReal, IUnknown_Exports.AddRef, 0)
38507- ' End Function
38508-
38509- ' Private Function pvIPAO_Release(This As IPAOHookStruct) As Long
38510- ' pvIPAO_Release = CallInterface(This.IPAOReal, IUnknown_Exports.Release, 0)
38511- ' End Function
38512-
38513- ' Private Function pvIPAO_QueryInterface(This As IPAOHookStruct, riid As UUID, pvObj As Long) As Long
38514- ' If (IsEqualGUID(riid, IID_IOleInPlaceActiveObject)) Then
38515- ' pvObj = VarPtr(This)
38516- ' Call pvIPAO_AddRef(This)
38517- ' pvIPAO_QueryInterface = 0
38518- ' Else
38519- ' pvIPAO_QueryInterface = CallInterface(This.IPAOReal, IUnknown_Exports.QueryInterface, 2, VarPtr(riid), VarPtr(pvObj))
38520- ' End If
38521- ' End Function
38522-
38523- ' Private Function pvIPAO_GetWindow(This As IPAOHookStruct, phwnd As Long) As Long
38524- ' pvIPAO_GetWindow = CallInterface(This.IPAOReal, IPAO_Exports.GetWindow, 1, VarPtr(phwnd))
38525- ' End Function
38526-
38527- ' Private Function pvIPAO_ContextSensitiveHelp(This As IPAOHookStruct, ByVal fEnterMode As Long) As Long
38528- ' pvIPAO_ContextSensitiveHelp = CallInterface(This.IPAOReal, IPAO_Exports.ContextSensitiveHelp, 1, VarPtr(fEnterMode))
38529- ' End Function
38530-
38531- ' Private Function pvIPAO_TranslateAccelerator(This As IPAOHookStruct, lpMsg As MSG) As Long
38532- ' ' Check if we want to override the handling of this key code:
38533- ' If (pvTranslateAccel(lpMsg)) Then
38534- ' pvIPAO_TranslateAccelerator = S_OK
38535- ' Else
38536- ' pvIPAO_TranslateAccelerator = CallInterface(This.IPAOReal, IPAO_Exports.TranslateAccelerator, 1, VarPtr(lpMsg))
38537- ' End If
38538- ' End Function
38539-
38540- ' Private Function pvIPAO_OnFrameWindowActivate(This As IPAOHookStruct, ByVal fActivate As Long) As Long
38541- ' pvIPAO_OnFrameWindowActivate = CallInterface(This.IPAOReal, IPAO_Exports.OnFrameWindowActivate, 1, VarPtr(fActivate))
38542- ' End Function
38543-
38544- ' Private Function pvIPAO_OnDocWindowActivate(This As IPAOHookStruct, ByVal fActivate As Long) As Long
38545- ' pvIPAO_OnDocWindowActivate = CallInterface(This.IPAOReal, IPAO_Exports.OnDocWindowActivate, 1, VarPtr(fActivate))
38546- ' End Function
38547-
38548- ' Private Function pvIPAO_ResizeBorder(This As IPAOHookStruct, prcBorder As RECT, ByVal puiWindow As Long, ByVal fFrameWindow As Long) As Long
38549- ' pvIPAO_ResizeBorder = CallInterface(This.IPAOReal, IPAO_Exports.ResizeBorder, 3, VarPtr(prcBorder), puiWindow, VarPtr(fFrameWindow))
38550- ' End Function
38551-
38552- ' Private Function pvIPAO_EnableModeless(This As IPAOHookStruct, ByVal fEnable As Long) As Long
38553- ' pvIPAO_EnableModeless = CallInterface(This.IPAOReal, IPAO_Exports.EnableModeless, 1, VarPtr(fEnable))
38554- ' End Function
38555-
38556-
3855738343 '@24
3855838344 Private Function CtlBoxWndProc(ByVal lng_hWnd As LongPtr, ByVal uMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr, ByVal uIdSubclass As LongPtr, ByVal dwRefData As LongPtr) As LongPtr
3855938345
@@ -41632,9 +41418,6 @@ End Function
4163241418 Resume Next
4163341419
4163441420 End Function
41635-
41636- '==================================================================================================
41637- 'WARNING: DO NOT ADD ANY CODE BELOW THIS LINE. ANY NEW CODE MUST GO BEFORE ORDINAL 34 (pvIPAO_AddRef).
4163841421
4163941422 #End Region
4164041423
0 commit comments