combox命令で作られるコンボボックスは手入力ができなかったため、いろいろと調べて次のようにしました。
しかし、どういうわけか手入力できなかったので、winobj命令でコンボボックスを作ってみました。
#include "user32.as" b="aaaa\nbb\nccccc\nddd\nee\n" repeat 3 b+=b loop combox a,60,b //comboxでコンボボックスを作成 hw = objinfo(stat, 2) //ウィンドウハンドル SetWindowLong hw, -16, $50000202 //$50000203 → $50000202
すると手入力はできるようになりました。
しかしリストボックスにスクロールバーが出なかったため、調べたところ、コンボボックスが持つリストボックスのウィンドウスタイルに違いがあるのではないかと思い、
次のように調べて同じにしました。
その結果スクロールバーは出たのですが、題名にあるように挙動が変です。
一応スクロールはできるのですが、スクロールバーのつかむ所が一番上から動きません。
ここで行き詰ってしまいました。
どうすれば同じ挙動を実現できるでしょうか?それとも、何か根本的に間違いをおかしているのでしょうか?
#include "user32.as" b="aaaa\nbb\nccccc\nddd\nee\n" repeat 3 b+=b loop combox a,60,b //comboxでコンボボックスを作成 hw = objinfo(stat, 2) //ウィンドウハンドル dim COMBOBOXINFO,13 //comboxでつくったコンボボックスのCOMBOBOXINFO構造体 COMBOBOXINFO(0)=$34 dim COMBOBOXINFO2,13 //winobjでつくったコンボボックスのCOMBOBOXINFO構造体 COMBOBOXINFO2(0)=$34 GetComboBoxInfo hw, varptr (COMBOBOXINFO) //COMBOBOXINFO構造体を得る listhw = COMBOBOXINFO(12) //comboxでつくったコンボボックスのリストボックスのハンドル GetWindowLong hw,-16 //comboxボックスのウィンドウスタイル mes stat //$50000203 GetWindowLong hw,-20 //拡張スタイル mes stat //0 GetWindowLong listhw,-16 //comboxボックスのリストボックスのウィンドウスタイル mes stat //$44A08041 GetWindowLong listhw,-20 //拡張スタイル mes stat //$80 winobj "combobox", "", 0, $50000202 //winobjでコンボボックスを作成 //CBS_DROPDOWNLIST($3) → CBS_DROPDOWN($2) winhw = objinfo(stat, 2) //ウィンドウハンドル notesel b //comboxボックスと同じ内容をsendmsgで追加 repeat noteinfo(0) noteget c,cnt sendmsg winhw, $143, 0, c loop noteunsel //追加おわり GetWindowLong winhw,-16 //winobjボックスのウィンドウスタイル mes stat //$50000202 GetWindowLong winhw,-20 //拡張ウィンドウスタイル mes stat //0 GetComboBoxInfo winhw, varptr (COMBOBOXINFO2) winlisthw = COMBOBOXINFO2(12) GetWindowLong winlisthw,-16 //winobjボックスのリストボックスのウィンドウスタイル mes stat //$44808041 SetWIndowLong winlisthw,-16, $44A08041 //comboxボックスのリストボックスと同じように変更 GetWindowLong winlisthw,-20 //拡張ウィンドウスタイル mes stat //$80