- 締切済み
VC++でマウスホイールイベントを使いたいのですが
VC++2010のフォームアプリケーションについての質問です。 フォームに設置したピクチャーボックス上でマウスホイールをすることで、ピクチャーボックスに表示されている画像(BMP)を拡大・縮小できるようにしたいのですが… 色々と試しているのですが、 ・マウスホイールのイベントが反映されない ・拡大縮小のやり方がわからない です。 どなたかご教授頂けると幸いです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wr5
- ベストアンサー率53% (2173/4061)
>これを応用する(形を変える)となるとエラーが頻出しまして… どういうエラーが出たのか。 くらいは掲示された方がよいかと思いますが。 C++/CLIはよく判っていないので、適当にいぢっただけですけど……。 Form1_Load()イベントハンドラでMSDNの例の様にpictureBox1にMouseWheelイベントハンドラを設定してみました。 イベントハンドラではブレークポイントを設定。 pictureBox1上でホイール操作をしてもブレークしない……。 フォーカスが設定されていないのか?ということで下記を追加。 this->pictureBox1->Focus(); やはりブレークしない。 Form1_Load()イベントハンドラでフォーカス設定の方法に問題がある。っぽいので検索して… http://www.atmarkit.co.jp/fdotnet/dotnettips/226winloadfocus/winloadfocus.html を発見。 this->ActiveControl = this->pictureBox1; に変更するとブレークしました。 が…この方法だとフォーム上に他のコントロールがあった時にフォーカスが移動しそうです。 this->MouseWheelでフォーム自体にイベントハンドラを設定して、 ハンドラに入った後で引数からマウスカーソルの座標を取得、pictureBox1の上にあるか判定してから処理した方がいいかも知れないですな。 # Win32APIなら…座標から子ウィンドウの領域内にあるか調べられたはずなのでC++/CLIでも調べられる…はず。
- Wr5
- ベストアンサー率53% (2173/4061)
画像の拡大縮小に関しては、自分で探して貰うとして……。 マウスホイールについてはMSDNの例が参考になるんじゃないですかね? http://msdn.microsoft.com/ja-jp/library/system.windows.forms.mouseeventhandler%28v=vs.100%29.aspx の「例」でC++を選択すると、Panelに対してホイール操作関連のイベントハンドラの登録と処理内容とかの例があります。 つまりコードで書く必要がある。ということですな。 # ちなみに「Windows フォーム マウスホイール」で検索して、 # http://d.hatena.ne.jp/nurs/20090624/1245841994 のページを発見し、続けて「MouseEventHandler」をMSDNで見つけたのですが。 C++/CLIはよく判らんのでここまで…です。
お礼
ありがとうございます。 このMSDNのページは自分でも見つけたんですがこれを応用する(形を変える)となるとエラーが頻出しまして…