OCXで親フォームのイベントを拾うには?

解決


モッテ  2003-12-10 11:05:02  No: 80826  IP: [192.*.*.*]

OCXを貼り付けた親フォームのイベントを貼り付けたOCXで拾い、親フォームのイベントでOCXから親フォームを操作したいのですが・・・。こんなこと可能なんでしょうか?

編集 削除
岡田 之仁  2003-12-12 09:32:29  No: 80827  IP: [192.*.*.*]

OCX等ActiveXや、ATL・STL構造のものでも、親フォームへは
参照しかできなかったと思います。
イベントを拾いたいのであれば、メッセージフックしかないと
思います。
親を参照することで、ウィンドウハンドルが解りますから、そ
のハンドルめがけて、メッセージフックし、イベントを拾う事
になると思いますが・・・

※  昔作ったものを調べてみて、そのように書いていましたの
      で・・・

他によい方法があれば、そのコーディングされた方、コメント
をよろしく!

以上。

編集 削除
魔界の仮面弁士  2003-12-12 11:23:16  No: 80828  IP: [192.*.*.*]

VB6製OCXを、VB6のフォームに貼り付けて使用する、という前提であれば…。

Option Explicit

Private WithEvents ParentForm As VB.Form

Private Sub ParentForm_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    UserControl.Cls
    UserControl.Print Format(Now(), "hh:nn:ss") & " - MouseMove(";
    UserControl.Print Button; ","; Shift; ","; X; ","; Y; ")"
End Sub

Private Sub UserControl_Paint()
    If Not UserControl.Ambient.UserMode Then
        UserControl.Print UserControl.Ambient.DisplayName
    End If
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    If UserControl.Ambient.UserMode Then
        Set ParentForm = UserControl.Extender.Parent
    End If
End Sub

編集 削除
モッテ  2003-12-12 11:30:21  No: 80829  IP: [192.*.*.*]

ご回答ありがとうございます。
大変参考になりました。

編集 削除