マウスの動きにあわせてWindowが動くようにしたい – 固定ページ 4 – プログラミング – Home

マウスの動きにあわせてWindowが動...
 
通知
すべてクリア

[解決済] マウスの動きにあわせてWindowが動くようにしたい

固定ページ 4 / 4

凸凹
 凸凹
(@凸凹)
ゲスト
結合: 22年前
投稿: 7
 

>そのはずです<ドラッグで移動ではない
>
>ので、なんでうまくいってるのでしょう?

前にも書いたとおり、
いきなりマウスカーソルを画面の外まですっ飛ばすとか(WM_MOUSEMOVEが突然消える)、
メニューの[移動(M)]項目の表示位置がメインウィンドウの外にはみ出ている
とかの状況が無ければ追尾できるでしょう。

画面を思い切り小さくして実験すれば追尾できない状況を容易に発現させることが
できるかもしれません。


返信引用
たみあ
 たみあ
(@たみあ)
ゲスト
結合: 22年前
投稿: 57
 

あぁ、ごめんなさい

・ウィンドウタイトルで左ボタンプレスする
・右ボタンプレスする
・左ボタンリリースする
・右ボタンリリースする

です


返信引用
MoriMori
 MoriMori
(@MoriMori)
ゲスト
結合: 22年前
投稿: 16
Topic starter  

みなさま、やっとできました。
ScreenToClient()を使ってクライアント座標に変換したらうまくいきました。

みなさまに教えていただいてとても勉強になりました。
まだまだ未熟者ですが、頑張りたいと思います。
ありがとうございました。

void CMainFrame::OnMouseMove(UINT nFlags, CPoint point)
{
  if(m_bMoving == TRUE)
{
CPoint point;
::GetCursorPos(&point);
m_pointNew = point;

CRect rect;
GetWindowRect(&rect);
rect.left += (m_pointNew.x - m_pointOld.x);
rect.right += (m_pointNew.x - m_pointOld.x);
rect.top += (m_pointNew.y - m_pointOld.y);
rect.bottom += (m_pointNew.y - m_pointOld.y);
ScreenToClient(&rect);
SetWindowPos(&wndTopMost, rect.left ,rect.top ,
rect.right - rect.left, rect.bottom - rect.top,SWP_SHOWWINDOW);
}

CFrameWnd::OnMouseMove(nFlags, point);
}


返信引用
ひろぴー
 ひろぴー
(@ひろぴー)
ゲスト
結合: 22年前
投稿: 182
 

> メニューの[移動(M)]項目の表示位置がメインウィンドウの外にはみ出ている
この場合、ウィンドウに触れた(?)途端に吸い付きますね。

メニュー項目がウィンドウ領域内に収まっているから上手く行っているんですかね。
普通に作るとウィンドウからはみ出すメニューっていうパターンは、そんなにないですから。

> たみあさん
面白そうなのでやってみたいのですが、出来ません。
コツを教えて下さい。
Win2000です。


返信引用
たみあ
 たみあ
(@たみあ)
ゲスト
結合: 22年前
投稿: 57
 

>面白そうなのでやってみたいのですが、出来ません。
>コツを教えて下さい。
>Win2000です。

最初の発言は左右を取り違えてます
2つめの発言でできませんか?

こちらも、2000ですが。。。


返信引用
ひろぴー
 ひろぴー
(@ひろぴー)
ゲスト
結合: 22年前
投稿: 182
 

> 最初の発言は左右を取り違えてます
> 2つめの発言でできませんか?
できません~(ToT)
マウスホイールがあるから出来ないのかな?
どんなアプリでも出来ますか?
プログラムと関係なくてすみません


返信引用
たみあ
 たみあ
(@たみあ)
ゲスト
結合: 22年前
投稿: 57
 

あぁ、たびたびごめんなさいです

とあるマウス関連のユーティリティ(常駐もの)があるとなります
ノーマルではなりませんので、そのアプリの副作用です

お騒がせしました


返信引用
固定ページ 4 / 4

返信する

投稿者名

投稿者メールアドレス

タイトル *

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