| 
    
     |  | ▼Abyss さん: いつもありがとうございます
 
 >今回のケースなら、IAccessibleのaccHitTestメソッドで
 >indexを取得する方法が簡単だと思います。
 >kanabunさんのご紹介掲示板でshiraさんも
 >そのような方法を提示してます。
 
 当時は GetTextExtentPoint32 API がこういうときにも使えるとの
 shiraさんからのレスに「舞い上がっていた」ので、ListBoxのTextHeight
 取得のための紹介下さった他の方法、あまり検証してませんでしたが、
 そうですか、あのスレではそういうことにも言及があったんですねぇ
 
 >accHitTestメソッドの利用なら割と簡単に
 >操作が可能になります。
 
 なるほど、こういうときに accHitTest で調べれるんですね、
 勉強になります。
 ほかにも いつかパクリたくなるアイデアいっぱいです。
 
 >  With New DataObject
 >    .SetText ObjPtr(Me)
 >    .StartDrag
 >  End With
 
 
 >  ptr = CLng(Data.GetText)
 >
 >  If ptr = ObjPtr(Me) Then
 >    Effect = fmDropEffectNone: Exit Sub
 >  End If
 >
 >  If Ptr2Cls(ptr).Index < 0 Then
 >    Effect = fmDropEffectNone
 >  End If
 
 
 >  Dim fIndex As Long
 >  Dim ptr As Long
 >  Dim acc As IAccessible, mCls As Class1
 >  Dim LBFrom As MSForms.ListBox
 >
 >  If Action <> fmActionDragDrop Then Exit Sub
 >
 >  ptr = CLng(Data.GetText)
 >  If ptr = ObjPtr(Me) Then Exit Sub
 >
 >  Set mCls = Ptr2Cls(ptr)
 >  fIndex = mCls.Index
 >  If fIndex < 0 Then Exit Sub
 >
 >  Set acc = LBox
 >  RtlMoveMemory ii(0), GetMessagePos()
 >  NewIndex = acc.accHitTest(ii(0), ii(1)) - 1
 
 |  |