|
本帖最后由 mdyblog 于 2022-8-24 04:15 编辑
如果没有SWIN、属性表 , 只有基本控件,
也可以 :
先 :
ENVI @WIN1.MSG=%&WM_COMMAND%::&&wp,&&lp, ENVI @@SENDMSG=%&lp%:%&WM_COMMAND%;%&wp%;%&__WinID%
然后 逐个 直接 在控件上注册
ENVI @&Edit1.MSG=%&WM_COMMAND%::&&wp,&&lp, CALL OnCommand Edit1
ENVI @&Edit2.MSG=%&WM_COMMAND%::&&wp,&&lp, CALL OnCommand Edit2
也可 直接加入小消息号(方便多了,甚至不用求控件ID了):
ENVI @&Edit1.MSG=COMMAND##%&EN_CHANGE%::&&wp,&&lp, CALL OnEN_CHANGE Edit1
ENVI @&Edit2.MSG=COMMAND##%&EN_CHANGE%::&&wp,&&lp, CALL OnEN_CHANGE Edit2
///////////////////////////////////////
ENVI &&WM_COMMAND=0x0111
ENVI &&EN_CHANGE=0x0300
_SUB WIN1,W354H309,
ENVI &&i=0
ENVI &&OldMsg=原始内容
MEMO &Edit1,L10T10W275H70,%&OldMsg%,,
MEMO &Edit2,L10T82W275H70,%&OldMsg%,,
ENVI @this.MSG=%&WM_COMMAND%::&&wp,&&lp, ENVI @@SENDMSG=%&lp%:%&WM_COMMAND%;%&wp%;%&__WinID%
//ENVI @&Edit1.MSG=%&WM_COMMAND%::&&wp,&&lp, CALL OnCommand Edit1 //OK
//ENVI @&Edit2.MSG=%&WM_COMMAND%::&&wp,&&lp, CALL OnCommand Edit2
ENVI @&Edit1.MSG=COMMAND##%&EN_CHANGE%::&&wp,&&lp, CALL OnEN_CHANGE Edit1
ENVI @&Edit2.MSG=COMMAND##%&EN_CHANGE%::&&wp,&&lp, CALL OnEN_CHANGE Edit2
LABE &提示,L28T204W263H30,,,
_END
WIN1
_SUB OnCommand
CALC -base=16 #&&wCode=%&wp% / 0x10000 //高16位,操作码
IFEX $%&EN_CHANGE% = %&wCode% ,! EXIT //不是改变
//内容改变,响应
// 不要用 MESS
CALC #&i= %&i% + 1
ENVI @&提示=%* 内容改变了 %&i%
_END
_SUB OnEN_CHANGE
CALC #&i= %&i% + 1
ENVI @&提示=%* 内容改变了 %&i%
_END
//////////////
如果有SWIN等, 只能,不能用%&WM_COMMAND%,用自定义消息#1:
ENVI @this.MSG=%&WM_COMMAND%::&&wp,&&lp, ENVI @@SENDMSG=%&lp%:#1;%&wp%;%&__WinID%
ENVI @&Edit1.MSG=#1::&&wp,&&lp, CALL OnCommand Edit1 //OK
ENVI @&Edit2.MSG=#1::&&wp,&&lp, CALL OnCommand Edit2
|
|