電子書籍の厳選無料作品が豊富!

開発環境:Windows XP、VB.NET 2005

MDI親フォームに複数のMDI子フォームを貼り付けるプログラムを作っています。
MDI子フォームを重ならないように配置させているのですが、MDI親フォームの表示領域を超えた場合に自動的にスクロールバーが現れます。
この時に、マウスのホイールの上下の動きにあわて、MDI親フォームのスクロールバーを制御して画面を上下させたいのですが方法が分かりません。

どなたかご享受ください。

A 回答 (1件)

やるとすると MDIの親フォームのクライアントウィンドウに対して


WM_VSCROLL(または WM_HSCROLL)メッセージを投げてやる必要があるようです

MDIフォームクラスに
dim client as MdiClient
Declare Auto Function SendMessage Lib "User32" _
  (ByVal hWnd As IntPtr, ByVal uMsg As UInt32, _
   ByVal wParam As Int32, ByVal lParam As Int32) As Int32
const WM_VSCROLL as UInt32 = &H115
const WM_HSCROLL as UInt32 = &H114
を宣言します

Loadイベントで
for each ctl as Control in Controls
  if typeof ctl is MdiClient then
    client = ctl
    exit for
  end if
next

MouseWheelイベントで
dim wp as Int32 = 0
if e.delta < 0 then
  wp = 1
end if
SendMessage( client.Handle, WM_VSCROLL, wp, 0 )
といった具合でいいようですよ

この回答への補足

期待通りの動作しました。
本当にありがとうございました。

補足日時:2009/07/03 10:03
    • good
    • 0
この回答へのお礼

ありがとうございます。
試してみます。

お礼日時:2009/07/02 19:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!