◀一般トップへ
  • 5413 ツールバーでのマウスの両ボタン押し下げ
    • 5418 Re:ツールバーでのマウスの両ボタン押し下げ
      • 5419 Re2:ツールバーでのマウスの両ボタン押し下げ
  • [5413] ツールバーでのマウスの両ボタン押し下げ taka 2006年09月05日 17:05

    ツールバーのボタンの上でマウスの両方のボタンを押すと
    固まってしまうのですが。。
    回避できるものならぜひ回避方法を教えてください。
    • [5418] Re:ツールバーでのマウスの両ボタン押し下げ ryoji 2006年09月06日 22:37

      ▼ takaさん
      > ツールバーのボタンの上でマウスの両方のボタンを押すと
      > 固まってしまうのですが。。

      ツールバーがマウスをキャプチャしたままになってるようです。
      キーボード操作は生きているので、'Ctrl' キーを押しながら '1' キーを2回押せば元に戻ります。

      本来これは Windows 共通部品であるコモンコントロール側の問題だと思うのですが、いちおう回避のためのソース修正を Patches に Up しておきます。
      参考. >>data:4486, >>dev:4034

      この問題はコモンコントロールのツールバーを素のままで使っているアプリ全部に影響してます。
      未対策アプリでこの問題を事前回避することは無理だと思いますが、起きてしまった場合は、デスクトップやタスクバーの何も無いところをクリックするなどして、対象アプリを一旦非アクティブにしてから戻れば無応答状態からは復帰できます。
      但し、この方法だとボタンは押された表示のままになってしまうことがあります。

      MS は Win XP ではもうまったく修正/対策する気が無いのか、エクスプローラや IE でもこの問題は起きます。
      これらは右クリックでコンテキストメニューを表示するので、通常は、たまたま自動的にキャプチャが解除されているだけですね。
      ツールバーボタン上で右ボタンを押し下げたまま左クリックし、そのままカーソルをタイトルバーか画面外まで動かして右ボタンを離せば固まります。
      ※Vista では起きないようになってるみたい。

      まぁ、ツールバーを両ボタン同時押しなんて、意図的にやる人は別として、それをミスでやってしまうことは滅多に無いから「XP の仕様」でいいだろうってことでしょうけどね。しょっちゅうミスする人にはそもそも Windows 操作は無理、て?
      問題に気づいちゃった人がこれを嫌がるのはよくわかるけど、さすがに既存/新規作成するアプリすべてに対策入れる気にはなれないな...
      • [5419] Re2:ツールバーでのマウスの両ボタン押し下げ taka 2006年09月07日 01:28

        ありがとうございます。サブクラス化するんですね。

        case WM_RBUTTONUP:
        if (wParam&MK_LBUTTON) return 0L;
        msg = WM_LBUTTONUP;
        break;

        case WM_RBUTTONDOWN:
        if (wParam&MK_LBUTTON) return 0L;
        msg = WM_LBUTTONDOWN;
        break;


        case WM_LBUTTONUP:
        case WM_LBUTTONDOWN:
        if (wParam&MK_RBUTTON) return 0L;
        break;

        とすれば、右クリックも左と同等に使えるってことですね。