HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0910
さかlistboxリサイズ時のズレ8解決


さか

リンク

2015/9/10(Thu) 20:45:57|NO.71571

listboxを配置し、画面のリサイズに合わせてリサイズするときれいにサイズが
変更されない場合があります。
きれいにリサイズされる方法ありますか?
説明が難しいですので以下のソースを実行してサイズを変更してみてください。
縦幅を変更すると下に隙間?ができます。
よろしくお願いします。


#uselib "user32.dll" #func MoveWindow "MoveWindow" int,int,int,int,int,int gsel 0,-1 screen 2,ginfo_dispx,ginfo_dispy,1,0,0,300,300 objsize ginfo_winx: listbox lbx, ginfo_winy, "aaaa\nbbb\nccc": hLbx=objinfo(stat, 2) oncmd *resize, $05 //リサイズされたら割り込み stop *resize MoveWindow hLbx,0,0,ginfo_winx,ginfo_winy,1 stop



この記事に返信する


スペース

リンク

2015/9/10(Thu) 20:54:07|NO.71572

リストボックスって横1列の高さ分ずつしかリサイズできないので、
それが原因ですね。
簡単な方法だと、画面から少しはみ出るくらいの大きさで指定するしか無いと思います。
ただ先輩方ならウインドウスタイルの変更とかで出来そう・・・



葡萄色

リンク

2015/9/10(Thu) 21:35:21|NO.71575

こんな感じ?

#uselib "user32.dll" #func MoveWindow "MoveWindow" int, int, int, int, int, int gsel 0, -1 screen 2, ginfo_dispx, ginfo_dispy, 1, 0, 0, 300, 300 winobj "listbox", "", $200, $50200001 | $100000 | $100, ginfo_winx, ginfo_winy hListbox = objinfo_hwnd(stat) oncmd *resize, $05 //リサイズされたら割り込み stop *resize MoveWindow hListbox, 0, 0, ginfo_winx, ginfo_winy, 1 stop



葡萄色

リンク

2015/9/10(Thu) 21:39:22|NO.71576

これも参考にしてください
http://hsp.tv/play/pforum.php?mode=pastwch&num=56566

winobjでListboxを設置した場合の項目の加減方法
http://lhsp.s206.xrea.com/hsp_object4.html#1



さか

リンク

2015/9/10(Thu) 22:00:17|NO.71577

>スペースさん
なるほど、1行分ずつのリサイズ仕様なんですね。
横サイズやmesbox等では起きないことに納得しました。

>葡萄色さん
おお、きれいにリサイズしますね。すばらしい。
参考もありがとうございます。

こんなに早く解決するとは思いませんでした。
助かりました。感謝です。



Noap

リンク

2015/9/10(Thu) 22:17:50|NO.71578

すみません。書くのが遅いため書いている間に葡萄色さんがいいサンプルを投稿しましたが、わたしが書いたサンプルも何かの役にたつかもしれないので一応投稿しておきます。
それとNoaからNoapに名前を変えました。


#uselib "user32.dll" #func MoveWindow "MoveWindow" int,int,int,int,int,int #uselib "user32.dll" #cfunc GetWindowLong "GetWindowLongA" sptr,int #func SetWindowLong "SetWindowLongA" sptr,int,int #define GWL_STYLE (-16) //ウィンドウスタイル #define WS_MAXIMIZEBOX $00010000//最大化ボタンを持つウィンドウを作成 #define LBS_NOINTEGRALHEIGHT $00000100//サイズを決められるようにする #define LBS_NOTIFY $00000001//oncmd用 #define WS_CHILDWINDOW $40000000 #define WS_VISIBLE $10000000 #define WS_VSCROLL $00200000//縦スクロールバー #define WS_HSCROLL $00100000//横スクロールバー 横にスクロールさせたいときに //拡張ウィンドウスタイル #define WS_EX_CLIENTEDGE $00000200//mesboxと同じ縁 #define LB_GETCURSEL $00000188 #define LB_ADDSTRING $00000180 #define WM_SETREDRAW $0000000B #define LB_ERR -1 #define WM_SIZE $00000005 gsel 0,-1 screen 2,ginfo_dispx,ginfo_dispy,screen_hide+screen_palette,0,0,300,300 //objsize ginfo_winx,ginfo_winy : listbox lbx, ginfo_winy, "aaaa\nbbb\nccc": hLbx=objinfo_hwnd(stat) //SetWindowLong hLbx, GWL_STYLE , GetWindowLong(hLbx, GWL_STYLE) | LBS_NOINTEGRALHEIGHT SetWindowLong hwnd, GWL_STYLE , GetWindowLong(hwnd, GWL_STYLE) | WS_MAXIMIZEBOX pos 0,20 winobj "ListBox" , "" , WS_EX_CLIENTEDGE , LBS_NOINTEGRALHEIGHT | WS_CHILDWINDOW | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL , ginfo_winx , ginfo_winy-20 hLbx=objinfo_hwnd(stat) sendmsg hLbx,WM_SETREDRAW ichiran="aaa" sendmsg hLbx,LB_ADDSTRING,0,varptr(ichiran) ichiran="bbb" sendmsg hLbx,LB_ADDSTRING,0,varptr(ichiran) ichiran="ccc" sendmsg hLbx,LB_ADDSTRING,0,varptr(ichiran) sendmsg hLbx,WM_SETREDRAW,1 oncmd gosub *resize,WM_SIZE gsel 2,1 while color 255,255,255 boxf 0,0,ginfo_winx,20 color 0,0,0 pos 0,0 sendmsg hLbx,LB_GETCURSEL,0,0 if stat!=LB_ERR{ tmp=stat+1 mes "選択行:"+tmp }else{ mes "選択されていません" } wait 1 wend *resize MoveWindow hLbx,0,20,ginfo_winx,ginfo_winy-20,1 return



Noap

リンク

2015/9/10(Thu) 22:19:52|NO.71579

後からSetWindowLongでLBS_NOINTEGRALHEIGHTを追加するのはなぜかうまくできません



葡萄色

リンク

2015/9/11(Fri) 20:50:02|NO.71593

>>Noapさん
SetWindowPos関数で更新してやれば反映できるかなと思ったのですが無理でした。
なんででしょうね…。



さか

リンク

2015/9/12(Sat) 09:43:10|NO.71609

>Noapさん

自分にもわかりませんがサンプルありがとうございます。



ONION software Copyright 1997-2021(c) All rights reserved.