无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: mdyblog
打印 上一主题 下一主题

[更新376#2825]PECMD2012.1.80.13_Win32_64.多窗口多线程.裸机系统2.3.3.1+18M酷M...

    [复制链接]
91#
发表于 2023-4-15 08:16:11 | 显示全部楼层
Bluebells 发表于 2023-4-14 21:06
PECMD 创建的编辑框控件, 怎么设置其输入字符数量限制?

有示例代码, 自己研究.

SET &EM_SETLIMITTEXT=0x00C5
SET &WM_COMMAND=0x0111
SET &EN_CHANGE=0x0300

WIN1

_SUB WIN1,W344H249,测试字符数,
    SET &EDIT2_V=汉字
    EDIT -vcenter &EDIT2,L75T70W161H30,%&EDIT2_V%,,
    SET &EDIT2.maxb=6
    ENVI @&EDIT2.ID=?;&&EDIT2_ID
    CALC -base=16 #&&EDIT2_CHANGE=%&EN_CHANGE% * 0x10000  + %&EDIT2_ID%   //低16位,控件ID   //高16位,操作码
    ENVI @this.MSG=_%&WM_COMMAND%::&&wp,&&lp, CALL OnCommand   //捕捉内容改变
_END

_SUB OnCommand
    IFEX $%EDIT2_CHANGE%=%&wp%,  CALL OnEDIT2_CHANGE
_END

_SUB OnEDIT2_CHANGE
    STRL -m &&len=%&EDIT2%
    IFEX $%&len%>%&EDIT2.maxb%, ENVI @&EDIT2=%&EDIT2_V%!  SET EDIT2_V=%&EDIT2%
_END

//SetLimitText 控件名 字符数(非字节数)
_SUB SetLimitText
     ENVI @%1.ID=?&&CWid
     ENVI @@SENDMSG=%&CWid%:%&EM_SETLIMITTEXT%;%2
_END

点评

谢了!已解决  发表于 2023-4-15 09:39
回复

使用道具 举报

92#
发表于 2023-5-18 08:52:13 | 显示全部楼层
泮安宁 发表于 2023-5-17 09:10
MESS怎么才能显示出page1中LABE1的内容,MESS %SwinMain1:LABE1%显示不正确不知是 ...



不同层级之间好像可以使用信息传递来解决这个问题,


  • WIN1
  • _SUB WIN1,W972H448,新窗口1,
  •     SWIN swin1:page1:SwinMain1,L0T0W580H320,,0x180
  •     SWIN swin2:page2:SwinMain2,L600T0W580H320,,0x180
  •     ITEM ITEM1,L280T354W60H30,ITEM1,Team envi @@sendmsg=%&wid%:#1;1;2|mess. %&ret%,
  • _END
  • _SUB page1,W580H320,
  •     Team set-ret &wid=%&__winid%|ENVI @this.MSG=#1::&&wp,&&lp,set-ret &ret=%labe1%
  •     LABE LABE1,L87T61W60H30,LABE1,,
  •     ITEM ITEM1,L93T147W60H30,ITEM1,,
  • _END
  • _SUB page2,W580H320,
  •     LABE LABE1,L87T61W60H30,LABE2,,
  •     ITEM ITEM1,L93T147W60H30,ITEM1,,
  • _END


点评

貌似不行 [attachimg]526405[/attachimg]  详情 回复 发表于 2023-5-18 09:25
回复

使用道具 举报

93#
发表于 2023-5-18 09:41:50 | 显示全部楼层




Team set^ envimode=1|set^ forcelocal=1


WIN1
_SUB WIN1,W972H448,新窗口1,
    SWIN swin1:page1:SwinMain1,L0T0W580H320,,0x180
    SWIN swin2:page2:SwinMain2,L600T0W580H320,,0x180
    ITEM ITEM1,L280T354W60H30,ITEM1,Team envi @@sendmsg=%&wid%:#1;1;2|mess. %&ret%,
_END
_SUB page1,W580H320,
    Team set-ret &wid=%&__winid%|ENVI @this.MSG=#1::&&wp,&&lp,set-ret &ret=%labe1%
    LABE LABE1,L87T61W60H30,LABE1,,
    ITEM ITEM1,L93T147W60H30,ITEM1,,
_END
_SUB page2,W580H320,
    LABE LABE1,L87T61W60H30,LABE2,,
    ITEM ITEM1,L93T147W60H30,ITEM1,,
_END

点评

谢谢,可以了,原来要用pe变量  详情 回复 发表于 2023-5-18 10:02
回复

使用道具 举报

94#
发表于 2023-5-18 10:17:11 | 显示全部楼层
M大的PECMD2012, 都建议:
1. 所有的脚本的头行都是建议加上语句: "Team set^ envimode=1|set^ forcelocal=1";
2. 弄清楚环境变量、PE变量、本级PE变量、全局PE变量的含义,尽量用PE变量。

点评

一直搞不清楚“PE变量”中的“PE”是什么意思  详情 回复 发表于 2023-5-18 20:01
回复

使用道具 举报

95#
发表于 2023-5-19 08:05:49 | 显示全部楼层
Anson4 发表于 2023-5-18 20:01
一直搞不清楚“PE变量”中的“PE”是什么意思

个人理解为局部变量或者私有变量, 退出范围自动销毁.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-13 10:27

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表