WM_MOUSEWHEEL メッセージが出るようにするには? – プログラミング – Home

WM_MOUSEWHEEL メッセージ...
 
通知
すべてクリア

[解決済] WM_MOUSEWHEEL メッセージが出るようにするには?


ウィッシュ
 ウィッシュ
(@ウィッシュ)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

VS2005, VC++, MFC, ダイアログベースアプリケーションです。

ダイアログにエディットを貼り付けています。
大きさを可変にしたいので、OnSize の中にコードで書きました。
if (m_pEdit == NULL)
{
m_pEdit = new CEdit();
m_pEdit->Create(ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL |
ES_AUTOHSCROLL | ES_WANTRETURN | WS_VISIBLE | WS_TABSTOP,
CRect(10, 10, m_nYoko, m_nTate), this, IDC_EDIT1);
}

マウスホイールを動かしたときに、ある動作をさせたいのですが
(ここでは仮にメッセージボックスを出すことにします)、
このエディットにカーソルがあるとき、マウスホイールを動かしても
メッセージボックスが出ません。
WM_MOUSEWHEEL メッセージが発生しないためと思います。

そこで試しに、もう1個のエディットをリソースビューを使って貼り付けました。
こちらのエディットにカーソルがあるときは、メッセージボックスが出ます。

コードで書いたエディットにフォーカスがあるとき、WM_MOUSEWHEEL メッセージが
発生するようにするにはどうしたらいいでしょうか?
あるいは、このエディットからフォーカスを外す方法があるでしょうか?
(例えば、OnMButtonDown でフォーカスを外す関数を実行するなど)

ビギナーで難しいことが判りませんが、よろしくお願いいたします。


引用未解決
トピックタグ
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

エディットコントロールが複数行スタイルだからかな?
サブクラス化してエディットコントロール側の
WM_MOUSEWHEELで対処してみてはどうでしょうか。


返信引用
ウィッシュ
 ウィッシュ
(@ウィッシュ)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

subaruさん、有り難うございます。

> エディットコントロールが複数行スタイルだからかな?
その通りでした。
リソースビューで貼り付けたエディットも、MultiLine を TRUE にすると、
同じくWM_MOUSEWHEEL メッセージが発生しません。

自分の目的は、エディット上ではないところでマウスホイールを動かしたときに
ある動作をさせたいのです。


返信引用
wclrp ( 'o')
 wclrp ( 'o')
(@wclrp ( 'o'))
ゲスト
結合: 18年前
投稿: 287
 

WM_MOUSEWHEELをどこで取得しているの?

エディットコントロールのWM_MOUSEWHEELハンドラ?
CEditということは、これは試していませんね。

ダイアログのWM_MOUSEWHEELハンドラ?

ダイアログのPreTranslateMessageなら、そのダイアログの子ウィンドウも含めてフォー
カスがあればPostMessage系のメッセージのすべてを横取りできる。

フォーカスない時はどうなるのか知らない。
フォーカスなくてもスクロールするアプリがあるね。


返信引用
ウィッシュ
 ウィッシュ
(@ウィッシュ)
ゲスト
結合: 16年前
投稿: 3
Topic starter  

wclrp ( 'o')さん
ダイアログのWM_MOUSEWHEELハンドラです。

このダイアログには、エディットコントロールが複数個あるだけで、
ほかにはOKボタン等もありません。
subaruさんのヒントで、シングルラインのエディットであればフォーカスが
あっても、ダイアログのWM_MOUSEWHEELメッセージが出ることが判ったので、
ダミーのシングルラインのエディットを1個設けました。
そのサイズをゼロにしました。つまり見えないエディット。
マウスの中ボタンを押したとき、GotoDlgCtrl(ダミーエディット)を実行して
フォーカスをダミーエディットに移すようにしました。
これで、中ボタンを押すという操作が増えるものの、目的をかなえられます。

ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました