投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/4/22 22:28:09
> マウススクロールをしたら
ここでいう『マウススクロール』という用語についてですが、
マウスによるスクロールバー操作のことを意味しているのでしょうか。
あるいは、マウスのホイール操作を意味しているのでしょうか。

また、現状の拡大縮小操作は、どの位置を基準座標として拡大されるのでしょうか。
右クリックした地点を中心として拡縮されるのか、それとも、右クリック座標を問わず、
現在の左上座標を基準としているのかといった点も気がかりです。


> イベントを変換してするみたいな動き
該当の ocx が、ウィンドウレスコントロールなのか、
それとも HWND を持つものなのかで変わってきます。

ウィンドウレスなどで、Windows Message をうまく拾えない状況であれば、
DirectInput を用いて、マウス操作をイベントとして受け取という手法があります。
VB6 から使えるライブラリは、DirectX 8 世代のものなので、
現在では入手が困難かもしれませんけれどね。
http://hanatyan.sakura.ne.jp/patio/read.cgi?no=228


一方、HWND が取得できる場合には、該当ウィンドウをサブクラス化してみてください。
先の『マウススクロール』とやらがスクロールバー操作を指しているのであれば、
WM_VSCROLL / WM_HSCROLL メッセージが飛んできている可能性がありますし、
ホイール操作であれば WM_MOUSEWHEEL メッセージが飛んでいるかもしれません。

DirectInput の通知にせよ、ウィンドウのサブクラス化によるメッセージ通知にせよ、
『マウススクロール』の操作を拾えるようであれば、該当の Windows Message が飛んできた時に、
右クリック処理を代わりに呼び出すようにします。

なお、右クリック相当の呼び出しにするには、通知メッセージを送って騙す方法や、
SendInput API でエミュレーションする方法などが思い当たりますが、
それらでうまくいくかどうかは、実際の環境で試さないと分かりませんし、
具体的なソースを提示することもできないです。