|
|
2014/2/23(Sun) 11:33:32|NO.60217
今ツリービューを使用するプログラムを作っています。
そこで、アイテムを右クリックするとメニューが開き、
「項目の削除」「項目名の変更」などの操作ができるようにしたいです。
今はstdlibを使わせていただいていますが、アイテムに対する右クリックメニューの
作り方がわかりません。
UhspObjs3というモジュールも利用しようとしましたが、命令が複雑でわかりませんでした。
アイテムへの右クリックの取得はoncmdでできると思うのですが、
どうすればよいか教えてください。
|
|
2014/2/23(Sun) 13:13:03|NO.60221
/*ご参考*/
winobj "SysTreeView32","",$200,$50000001,200,200
hh = objinfo(0,2)
nn = 0,$FFFF0001,$23,0,0,0,varptr(ss),0,0,0
ss = "Root"
sendmsg hh,$1100,0,varptr(nn)
oncmd gosub *label,$4E ;_NOTIFY
stop
*label
dupptr NMHDE,lparam,12,4
if (NMHDE(2) == -5) {dialog "Rckick"}
if (NMHDE(2) == -3) {dialog "Dclick"}
return
|
|
2014/2/23(Sun) 13:47:20|NO.60222
/*蛇足(UhspObjs3の文言見落としたわ恥ずかしい・・・):修正
上記が利用できる環境ならば
.../sample/_TreVew.hsp
.../sample/_MenBar.hsp が参考に成ると思います。
(.../sample/_Mstyle.hsp もポップアップメニュー作成に便利かもしれません)
最新(UhspObjs3)= http://www12.ocn.ne.jp/~fortune/
*/
|
|
2014/2/23(Sun) 15:10:11|NO.60224
>fortunehill
サンプルと情報をありがとうございます!
stdlibのツリービューに組み込んだところ、
右クリック判定は出来ましたがアイテム(項目)の取得ができません。
どうやら右クリックではアイテムの選択が効かないことが原因のようです。
#include "../stdlib/sysval.as"
#include "../stdlib/gblconst.as"
#include "../stdlib/winapi32.as"
#include "../stdlib/exgeneral.as"
#include "../stdlib/extreeview.as"
treehwnd=Createtreeview(0,0,0,640,480)
treesetitem treehwnd,"TEST",0,2,0,0 : hParent=stat
treesetitem treehwnd,"TEST-1",hParent,2,0,0
oncmd gosub *onclk,$4E
stop
*onclk
dupptr NMHDE,lparam,12,4
if (NMHDE(2) == -5) {
s=""
treegetstr s,treehwnd
dialog "項目:"+s
}
return
右クリックでアイテムを選択できるようにするか、他の解決法があれば教えて下さい。
|
|
2014/2/23(Sun) 22:52:51|NO.60241
/*こんな感じかな?*/
#uselib "user32"
#func global ScreenToClient "ScreenToClient" sptr,sptr
winobj "SysTreeView32","",$200,$50000001,200,200 :hh = objinfo(0,2)
nn = 0,$FFFF0001,$23,0,0,0,varptr(ss),0,0,0 :ss = "Root2"
sendmsg hh,$1100,0,varptr(nn)
nn = 0,$FFFF0001,$23,0,0,0,varptr(ss),0,0,0 :ss = "Root1"
sendmsg hh,$1100,0,varptr(nn)
oncmd gosub *label,$4E ;WM_NOTIFY
stop
*label
dupptr NMHDE,lparam,12,4
if (NMHDE(2) == -5) {pp = ginfo_mx,ginfo_my
ScreentoClient hh,varptr(pp)
zz = pp,pp.1,$E,0
sendmsg hh,$1111,,varptr(zz) ;TVM_HITTES
sendmsg hh,$110B,9,zz(3) ;TVM_SELECTITEM(選択させるか否かは自由)
nn = $F,zz(3),0,0,varptr(ss),512 ;
sendmsg hh,$110C,0,varptr(nn) ;TVM_GETITEMA
title "Rclick "+ss}
if (NMHDE(2) == -3) {title "Dclick"}
return
|
|
2014/2/24(Mon) 14:53:34|NO.60247
>fortunehillさん
ありがとうございます!
これをstdlibに組み込んでみようと思います。
|
|