◀ANSI版開発トップへ
  • 2101 スクロールバーが他ウィンドウで上書きされる
    • 2115 RE: スクロールバーが他ウィンドウで上書きされる
      • 2118 Re2: スクロールバーが他ウィンドウで上書きされる
        • 2138 Re3: スクロールバーが他ウィンドウで上書きされる
  • [2101] スクロールバーが他ウィンドウで上書きされる 龍 2002年05月23日 20:10

    いつも大変便利に使わせていただいています。
    スクロールバーが他ウィンドウで上書きされる現象を報告します。

    [現象]
    1)ドキュメント指定なしでサクラエディタを起動する
    2)縦スクロールバーのスクロールボックス(真ん中の長方形)をクリックする
    3)サクラエディタのスクロールバー上を、他のウィンドウで上書き(移動)する
    4)縦スクロールバーが上書き状態のままとなる(再描画されていない)
    ※ウィンドウの縦範囲に収まるテキストを表示した場合には、再現する
    ※横スクロールバーも、「ツール」→「現ウィンドウ幅で折り返す」を設定すると、同様の現象となる

    ★ソースを見たのですが知識不足で、再描画させる処理やタイミングがよく分かりませんでした。
    (参考)
    ・ウィンドウ範囲に収まる場合、スクロールバーをクリックしても、マウスイベントが発生しない。
     (ウィンドウ範囲に収まらずスクロールバーが有効の場合は、同様の操作でマウスイベントが発生している)
    ・WM_PAINTのイベントは発生するが、クライアント領域を更新するだけである。

    よろしくお願いします。
    • [2115] RE: スクロールバーが他ウィンドウで上書きされる もか 2002年05月27日 12:52


      ▼ 龍さん
      > スクロールバーが他ウィンドウで上書きされる現象を報告します。
      >
      > [現象]
      > 1)ドキュメント指定なしでサクラエディタを起動する
      > 2)縦スクロールバーのスクロールボックス(真ん中の長方形)をクリックする
      > 3)サクラエディタのスクロールバー上を、他のウィンドウで上書き(移動)する
      > 4)縦スクロールバーが上書き状態のままとなる(再描画されていない)
      > ※ウィンドウの縦範囲に収まるテキストを表示した場合には、再現する
      > ※横スクロールバーも、「ツール」→「現ウィンドウ幅で折り返す」を設定すると、同様の現象となる
      >
      > ・ウィンドウ範囲に収まる場合、スクロールバーをクリックしても、マウスイベントが発生しない。
      >  (ウィンドウ範囲に収まらずスクロールバーが有効の場合は、同様の操作でマウスイベントが発生している)
      > ・WM_PAINTのイベントは発生するが、クライアント領域を更新するだけである。

      私もたまに消えていたんですが、最近やっと再現することができました
      ただし、WindowsXP限定です。もしほかのOSだった場合は別の
      ことが起こっている可能性大です。

      以下の手順で再現しました。
      ウインドウの表示域の行数より全行数が短い場合、
      要するにスクロールバーのつまみが動かないときに
      そのつまみをクリック
      するとそのスクロールバーがなくなっちゃいます
      この後、ウィンドウを移動してみると分かります

      ただし、XPでmanifestファイルがあるときにだけで
      XP/クラシックどちらのスタイルでも発生します

      SIF_DISABLENOSCROLL をつけると消滅は防げます
      ただし、上のほうの行が画面に表示されてなくても
      スクロールバーが DISABLE になることがあるので、
      そのときは少し不便になります。
      どうしたらいいか、ご意見募集中です


      #このあたりを機会にちょくちょく開発に参加させてもらいたいと思います
      #なおDOS時代をまったく知らない若輩者なのでお手柔らかに(^_^;
      • [2118] Re2: スクロールバーが他ウィンドウで上書きされる 龍 2002年05月27日 19:59

        ▼ もかさん
        >
        (途中略)
        >
        > 私もたまに消えていたんですが、最近やっと再現することができました
        > ただし、WindowsXP限定です。もしほかのOSだった場合は別の
        > ことが起こっている可能性大です。

        たしかに、WindowsXPでmanifestファイルがある時だけでした。
        (再現環境を明記していなくてすみませんでした)

        (途中略)
        > SIF_DISABLENOSCROLL をつけると消滅は防げます
        > ただし、上のほうの行が画面に表示されてなくても
        > スクロールバーが DISABLE になることがあるので、
        > そのときは少し不便になります。

        SSRC_2002-05-20\SAKURA_CORE\CEditView.cpp (Line:651,678,2587,2598,2608)
         si.fMask = SIF_ALL;
        を
         si.fMask = SIF_ALL | DISABLENOSCROLL;
        と変更すると問題なくなりました。
        (もかさんが指摘しているような、問題点は今のところ確認できていません。)

        勉強になりました。    感謝&合掌
        • [2138] Re3: スクロールバーが他ウィンドウで上書きされる やざき 2002年06月04日 23:59


          >SSRC_2002-05-20\SAKURA_CORE\CEditView.cpp (Line:651,678,2587,2598,2608)
          > si.fMask = SIF_ALL;
          >を
          > si.fMask = SIF_ALL | DISABLENOSCROLL;
          >と変更すると問題なくなりました。
          >(もかさんが指摘しているような、問題点は今のところ確認できていません。)
          >
          >勉強になりました。    感謝&合掌

          取り込みました。Thanx!