◀ANSI版開発トップへ
  • 5493 コンボボックスのリスト選択-編集-エンターの不具合
    • 5495 Re:コンボボックスのリスト選択-編集-エンターの不具合
      • 5496 Re2:コンボボックスのリスト選択-編集-エンターの不具合
        • 5497 Re3:コンボボックスのリスト選択-編集-エンターの不具合
          • 5498 Re4:コンボボックスのリスト選択-編集-エンターの不具合
            • 5499 解決です!
    • 5503 Re:コンボボックスのリスト選択-編集-エンターの不具合
      • 5506 Re2:コンボボックスのリスト選択-編集-エンターの不具合
        • 5513 Re3:コンボボックスのリスト選択-編集-エンターの不具合
  • [5493] コンボボックスのリスト選択-編集-エンターの不具合 syat 2008年12月06日 13:44

    コンボボックスのリストを選んで、末尾を数文字削ってエンターを押すと、削った文字が復活します。
    1.6.3.0限定です。(それ以前では文字列が消える)
    パッチを作りました。
    Patches:2394131

    コンボボックスのメッセージでCB_GETEDITSELはバイト単位の位置を返すのに、CB_SETEDITSELは文字単位の位置を指定するという変な動きをするんですが、私だけでしょうか?
    環境依存だったらどうしよう(; °_°)
    • [5495] Re:コンボボックスのリスト選択-編集-エンターの不具合 なすこじ 2008年12月06日 23:48

      ▼ syatさん
      > コンボボックスのメッセージでCB_GETEDITSELはバイト単位の位置を返すのに、CB_SETEDITSELは文字単位の位置を指定するという変な動きをするんですが、私だけでしょうか?
      > 環境依存だったらどうしよう(; °_°)

      私の所ではCB_SETEDITSELの方もバイト単位でないと正常動作しませんでした。

      開発環境:BCC5.5.1およびVC2005 Express Edition
      テスト環境:Win2k SP4およびWinXP SP2
      • [5496] Re2:コンボボックスのリスト選択-編集-エンターの不具合 syat 2008年12月07日 02:07

        ▼ なすこじさん
        > 私の所ではCB_SETEDITSELの方もバイト単位でないと正常動作しませんでした。
        >
        > 開発環境:BCC5.5.1およびVC2005 Express Edition
        > テスト環境:Win2k SP4およびWinXP SP2
        ありがとうございます。
        私はVC2008ExpressEditionで、WinXP SP3です。

        現象としては、2バイト文字をカーソル位置より前に含むときに問題になります。
        例えば、
         あいA|BCDE  縦棒はカーソル
        の状態でCB_GETEDITSELを実行すると 5 を取得します。(バイト単位)
        その結果を使ってCB_SETEDITSELを実行すると、以下のようになります。
         あいABC|DE
        カーソルがずれてしまいます。

        UNICODE版では基本的に1文字=2バイトなので問題になりませんでしたが、ANSIビルドだと同様の問題が出ました。
        サロゲートペア文字はどちらも2でカウントするらしく大丈夫そうでした。

        明日にでもBCCで試してみます。SP3のバグとかいうオチは~ないよね。
        • [5497] Re3:コンボボックスのリスト選択-編集-エンターの不具合 ryoji 2008年12月07日 22:16

          ▼ syatさん

          Patches:2394131(combo_list_hide_A2.patch)を適用したプログラムを、
          Vista SP1で動かしてみました。

          >  あいA|BCDE  縦棒はカーソル

          の状態でEnterを押すと、
           あ|いABCDE
          のようにカーソル位置がずれてしまいます。

          ワークで使っているローカル変数は以下の値になってました。
          Aeroスタイル有効のとき:nSelStartByte=3, nSelStartChar=1
          Aeroスタイル無効のとき:nSelStartByte=5, nSelStartChar=3

          どうやら、
          Aeroスタイル有効のときはCB_SETEDITSEL/CB_SETEDITSELとも文字数単位
          Aeroスタイル無効のときはCB_SETEDITSEL/CB_SETEDITSELともバイト数単位
          ということみたいです。

          > 明日にでもBCCで試してみます。SP3のバグとかいうオチは~ないよね。

          CB_GETEDITSELなどの動作結果は、コンパイラではなくOSやIEに付属のコモンコントロール(comctl32.dll)のバージョン依存になると思います。
          • [5498] Re4:コンボボックスのリスト選択-編集-エンターの不具合 ryoji 2008年12月07日 22:59

            パッチ後のexeをXP SP3でも動かしてみました。

            結果はVista SP1と同じで、
             あいA|BCDE
            から
             あ|いABCDE
            になってしまいます。

            ローカル変数もVista SP1と同様で、
            Lunaスタイル有効のとき:nSelStartByte=3, nSelStartChar=1
            Lunaスタイル無効のとき:nSelStartByte=5, nSelStartChar=3
            でした。

            ひょっとするとsyatさんの環境で使用されている何らかの常駐ソフトが怪しいかもです。
            #自分のところの確認環境はVirtual PC上の仮想PC(XP SP3)で、凝ったカスタマイズはほとんどしてません。
            • [5499] 解決です! syat 2008年12月07日 23:48

              まず、BCCでコンパイルしてみたところ、皆さんの環境と同じような結果になりました。
              また、VC2008EEで、SDKを6.0A、6.1でビルドしたところどちらも私が主張する動きを再現しました。
              不思議ですね~

              という報告を書き込もうとしたところで、ryojiさんの書き込みを見ました。
              ▼ ryojiさん
              > ひょっとするとsyatさんの環境で使用されている何らかの常駐ソフトが怪しいかもです。
              > #自分のところの確認環境はVirtual PC上の仮想PC(XP SP3)で、凝ったカスタマイズはほとんどしてません。
              ryojiさん、正解です!
              ZTopという常駐ソフトを止めて試したところ問題が発生しなくなりました。どうもお騒がせしました。

              もしこの問題が簡単に解決できそうにないものだったらあまり深入りしたくないので、選択状態を復元する機能をやめようかと考えていました。リストを閉じたら文字列を全選択にするというのも不自然じゃないかな、と。ZTop便利だし。
    • [5503] Re:コンボボックスのリスト選択-編集-エンターの不具合 syat 2008年12月13日 16:34

      リストボックスを閉じたら文字列を全選択するだけにしてみました。
      Patches:2394131
      • [5506] Re2:コンボボックスのリスト選択-編集-エンターの不具合 なすこじ 2008年12月23日 21:07

        ▼ syatさん
        ソースコードおよび動作を確認しました。
        コミットOKと思います。
        • [5513] Re3:コンボボックスのリスト選択-編集-エンターの不具合 syat 2008年12月26日 21:06

          ▼ なすこじさん
          > ソースコードおよび動作を確認しました。
          > コミットOKと思います。
          ありがとうございます。
          リビジョン1496でコミットしました。