「WM_MOUSEMOVE」について
◇-?「WM_MOUSEMOVE」について-しん-09/04-13:13(367)-No.483087 ┣?!Re:「WM_MOUSEMOVE」について...-ヒロ-09/04-14:07(366)-No.483095 ┃ ┗?!!Re:「WM_MOUSEMOVE」について...-しん-09/04-16:35(363)-No.483106 ┃ ┣?!!!Re:「WM_MOUSEMOVE」について...-ヒロ-09/04-18:32(361)-No.483112 ┃ ┗?!!!Re:「WM_MOUSEMOVE」について...-jtaka[BJCB]-09/04-18:38(361)-No.483114 ┃ ┗?!!!【解決】Re:「WM_MOUSEMOVE」...-しん-09/05-08:43(347)-No.483134 ┗?!Re:「WM_MOUSEMOVE」について...-からあげも食べたい-09/04-20:14(360)-No.483120
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
▲このページのトップに戻る
483087 | 「WM_MOUSEMOVE」について | しん URL | 2009/09/04-13:13 |
メーカー名:東芝 OS名:WindowsXp パソコン名:PAEX522PDE3 -- 「WM_MOUSEMOVE」についてお願いします。 ・連続的に「WM_MOUSEMOVE」を受け、処理していますが ・今発行されたメッセージの一つ前の情報はどこかで知る事が出来るのでしょうか ・現在は下記の方法で対応しています。 ・ case WM_MOUSEMOVE: pt.x = LOWORD(lp)-ppt.x; //MOUSE_X座標 OffsetRect(&data[S].Rect,pt.x ,0); ppt.x=LOWORD(lp); //MOUSE_X座標 break; |
▲このページのトップに戻る
483095 | Re:「WM_MOUSEMOVE」について | ヒロ | 2009/09/04-14:07 |
記事番号483087へのコメント しんさんは No.483087「「WM_MOUSEMOVE」について」で書きました。 WM_LBUTTONDOWNまたはWM_RBUTTONDOWNで拾うのはダメ? (マウスのボタンを押す事を前提にした場合) |
▲このページのトップに戻る
483106 | Re:「WM_MOUSEMOVE」について | しん | 2009/09/04-16:35 |
記事番号483095へのコメント ヒロさん 有難うございます。 ・OffsetRect()で連続的に移動する事を希望しています。 ・WM_LBUTTONDOWN又はWM_RBUTTONDOWNで連続移動作業を中断する事は? 何処かで直前の「WM_MOUSEMOVE」の値を知りたいです。 機能的には掲載のコーテイングで出来るのですが Windowsの固有の機能(関数)から出来ないかと考えています。 |
▲このページのトップに戻る
483112 | Re:「WM_MOUSEMOVE」について | ヒロ | 2009/09/04-18:32 |
記事番号483106へのコメント しんさんは No.483106「Re:「WM_MOUSEMOVE」について」で書きました。 基本的にメッセージキューから取り出したメッセージを処理してしまうとメッセージ は破棄されるので、過去のメッセージを取り出すのは無理ではないかと。 (メッセージキューに溜まっている中から特定のメッセージを取り出す事は出来た ような気が) なのでWM_MOUSEMOVEメッセージの処理毎に値を保持するしかないのでは? |
▲このページのトップに戻る
483114 | Re:「WM_MOUSEMOVE」について | jtaka[BJCB] | 2009/09/04-18:38 |
記事番号483106へのコメント しんさんは No.483106「Re:「WM_MOUSEMOVE」について」で書きました。 メッセージキューのトップからメッセージをGetMessageにしろPeekMessageにしろ 取得する場合、過去のメッセージはすでに破棄されているわけで。破棄されたものを 取得できるはずはなく。 もしGetMessageがキュートップからメッセージを取り出すときにメッセージの種類を 判断して保存するようになっていれば可能かも知れないが、それはメッセージループに おいてループごとに余計な処理が行われることになりパフォーマンスがおそらくは 大幅に悪化するだろう。 メッセージループのメカニズムはWindowsの根幹であり、Windows1.xの時代からある わけで、そのころのリソースを考えればメッセージを判断するのも保存するのも 行われていないというのは容易に想像可能なわけで。それが多少リソースが余裕が 出てきたからといって、プログラムが実行されている間にループし続けている メッセージループに余計な処理を付加するという設計は、まずなかろうと。 あと、分割統治の考えから、メッセージループは適切にメッセージを取得し適切な ウィンドウプロシジャにメッセージをディスパッチするのに専念し、ウィンドウ プロシジャがメッセージに従った処理を行うことに専念するというのが自然であろう。 メッセージループ側にメッセージを判断する機能を持たせるのは美しくない。 ってことで、あなたの想定する便利機能は存在しないであろう。 |
▲このページのトップに戻る
483134 | Re:「WM_MOUSEMOVE」について | しん | 2009/09/05-08:43 |
記事番号483114へのコメント jtaka さん からあげも食べたい さん ヒロ さん 皆さん本当に有難うございました。 前回、書きましたが、機能的には、現在出来ているのですが、Windowsの機能(関数)で 出来ないkと考え、ご質問しました。 jtaka、ヒロ さんの指摘にも有る様に、 想定する便利機能は存在しないであろう。 のようです。 目的の概略 ・Rect関数で描画された図形を「WM_MOUSEMOVE」で連続的に移動させる。 ・OffsetRect()を使用する。 ・現在値と直近のX値、Y値との差分はどうして採るか。 以上です、今回も有難うございました。 |
▲このページのトップに戻る
483120 | Re:「WM_MOUSEMOVE」について | からあげも食べたい | 2009/09/04-20:14 |
記事番号483087へのコメント しんさんは No.483087「「WM_MOUSEMOVE」について」で書きました。 「その処理を何のために使用としていますか?」 マウスを追跡するように「何か」を表示するために、WM_MOUSEMOVEのハンドラで座標をとっていて、 前回描画した「何か」を消すために必要というのであれば、単に前回の座標を変数に突っ込んでおけばよいでしょう。 (単に1つ前のが必要なら、一つ前の座標を残せばいいだけですし) メッセージループでGetMessageまたはPeekMessageのwRemoveMsgにPM_REMOVEを指定してメッセージを取り出した場合、キューから削除されるので残っていません。 GetMessageをする前で最後のメッセージの座標であればGetMessagePosで取れるかもしれませんが、それがWM_MOUSEMOVEだとは限らないでしょうし、1つ前ではなく最後のですしね。 |
何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり
参考 | 回数 | 投稿日時 | 何か一言 |
---|