DOBON.NET DOBON.NETプログラミング掲示板過去ログ

コントロールを重ねて、一番上のコントロールのイベントを使用したいのですが?

分類:[.NET]

あるActiceXコントロールがあり、そのコントロール事態に、右クリックメニューがあるのですが、それを破棄して独自のメニューを表示したいと考えています
そのコントロール事態にも、右クリックメニューを破棄するメソットはあるのですが、どうも安定しないのです。

そのため、そのコントロール事態は、表示しておいて、その上に透明なコントロール(ラベルコントロール?)をはり、そのコントロールのマウスイベントを使いたいと考えていますが、そのようなことは、可能なのでしょうか?
こんばんは、ゆうさん。ピラルクです。

コントロール重ねの透明作戦はどうも上手くいかないですね。(--;

透明Form重ね作戦なら、

Private m_coverOCXForm As New Form()

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
With m_coverOCXForm
.FormBorderStyle = FormBorderStyle.None
.Owner = Me
.Opacity = 0.01
.ShowInTaskbar = False
.Visible = True
End With
End Sub

Private Sub Form1_Move(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Move, MyBase.Activated
With m_coverOCXForm
.Size = New Size(AxHogeOCX.Width, AxHogeOCX.Height)
.Location = AxHogeOCX.PointToScreen(New Point(0, 0))
End With
End Sub

というような感じでおよそ実現できそうですが、
このm_coverOCXFormがActiveにされた時の対処
も要るし、なんか気が乗らないのですねぇ。。。

やっぱり、右クリックを殺してしまうほうが良い
のでは?

Class CustomizedOCX
Inherits OriginalOCX
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Select Case m.Msg
Case &H204 'WM_RBUTTONDOWN
m.Msg = 0
'TODO:ShowMyPopup()
End Select
MyBase.WndProc(m)
End Sub
End Class

とOCXをサブクラス化して、Messageを奪う。
(Shift+F10とかも要るかも)
このような手法でも安定しないんでしょうか?
そのOCXにShowContextMenuとかPopupを出すMethod
があって、それをOverrideして解決できたら一番な
んですが。

DOBON.NET | プログラミング道 | プログラミング掲示板