找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: mdyblog

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

   火... [复制链接]
发表于 2024-5-30 17:06:31 | 显示全部楼层
本帖最后由 泮安宁 于 2024-5-30 17:17 编辑
mdyblog 发表于 2024-5-30 12:09
随便给点数据就显示水平进度条。 再删掉该行
@TEAM WIN1 | EXIT
_SUB WIN1,W1080H500,,,,,,-scale:%&LO ...

不行啊,当TABL与窗口一样大时,并且TABL列宽总和大于TABL的宽,有数据水平滚动条也不显示
测试当SUB的高为500时,TABL的高为470才能看到水平滚动条
PixPin_2024-05-30_17-10-55.png




PixPin_2024-05-30_17-16-35.png

点评

1.窗口的标题栏你没算上吧?窗口标题栏高度+tabl 高度=窗口高度 2.给tabl 设置一个渐变度,就能将标头区分开了。 [attachimg]542426[/attachimg]  详情 回复 发表于 2024-5-30 19:47
回复

使用道具 举报

发表于 2024-5-30 17:27:50 | 显示全部楼层
liangnijian 发表于 2024-5-30 17:25
LABE用来当按钮挺合适,但是目前按鼠标左键就执行命令了,能加一个参数:松开鼠标左键再执行命令 吗

WM_LBUTTONUP左键弹起消息
回复

使用道具 举报

发表于 2024-5-30 17:54:01 | 显示全部楼层
liangnijian 发表于 2024-5-30 17:35
LABE用不了吧,之前用SWIN写按钮,多几行命令,而且也麻烦

PixPin_2024-05-30_17-53-09.gif
回复

使用道具 举报

发表于 2024-5-30 18:08:05 | 显示全部楼层
  1. ENVI &WM_LBUTTONUP=0x0202
  2. CALL @test
  3. _SUB test,W500H300
  4.     LABE -center -vcenter labe1,L200T57W50H25,刷新,*1 ,0xffffff#0xfa9f00#0xffffff#0xffb12a
  5.     ENVI @labe1.MSG=%&WM_LBUTTONUP%::w,l,CALL DISK
  6. _END
  7. _SUB DISK
  8.     MESS aaa
  9. _END
复制代码
回复

使用道具 举报

发表于 2024-5-30 19:47:19 | 显示全部楼层
泮安宁 发表于 2024-5-30 17:06
不行啊,当TABL与窗口一样大时,并且TABL列宽总和大于TABL的宽,有数据水平滚动条也不显示
测试当SUB的 ...

1.窗口的标题栏你没算上吧?窗口标题栏高度+tabl 高度=窗口高度
2.给tabl 设置一个渐变度,就能将标头区分开了。

  1. ENVI$ &SL=0C  //分行
  2. ENVI$ &SC=0B  //分列
  3. ENVI$ &NL=0d 0a
  4. ENVI$ &NLa=0a
  5. ENVI$ &NL1=0a
  6. ENVI$ &TAB=09
  7. CALL @WIN1
  8. _SUB WIN1,W800H500,,,,,,-scale:%&LOGPIXELSX%
  9.     TABL -sl:%&SL% -sc:%&SC% -cksz:20 -hfont:12:**B -font:10::-50:0xFFFFFF:0.1:::::40 TABL1,L0T0W800H467,200:1%&SC%200:2%&SC%600:3%&SC%,0,0x400
  10.     ENVI @TABL1.val=-1
  11. _END
复制代码
1.png

点评

确实没算标题栏  详情 回复 发表于 2024-5-30 20:39
跑到川口外面去了。 窗口太小。 你的窗口大小,包括 边框。 刨掉边框, 窗口 不够显示的。 加个 -cisze , 所给 大小不包含 边框。 边框另算。 效果: [attachimg]542438[/attachimg]  详情 回复 发表于 2024-5-30 20:17
回复

使用道具 举报

 楼主| 发表于 2024-5-30 20:17:14 | 显示全部楼层
本帖最后由 mdyblog 于 2024-5-30 20:38 编辑
527104427 发表于 2024-5-30 19:47
1.窗口的标题栏你没算上吧?窗口标题栏高度+tabl 高度=窗口高度
2.给tabl 设置一个渐变度,就能将标头区 ...

跑到口外面去了。 窗口太小。
你的窗口大小,包括 边框。 刨掉边框, 窗口 不够显示的。
加个 -csize  , 所给 大小不包含 边框。 边框另算。 控件只能在客户区(-csize),边框不算。
效果:
1.png

点评

明白了  详情 回复 发表于 2024-5-30 20:40
哦,原来加上-csize就一劳永逸了  详情 回复 发表于 2024-5-30 20:23
回复

使用道具 举报

发表于 2024-5-30 20:23:00 | 显示全部楼层
mdyblog 发表于 2024-5-30 20:17
跑到川口外面去了。 窗口太小。
你的窗口大小,包括 边框。 刨掉边框, 窗口 不够显示的。
加个 -cisze ...

哦,原来加上-csize就一劳永逸了

点评

对的。 方便。  详情 回复 发表于 2024-5-30 20:39
回复

使用道具 举报

 楼主| 发表于 2024-5-30 20:39:11 | 显示全部楼层
527104427 发表于 2024-5-30 20:23
哦,原来加上-csize就一劳永逸了

对的。 方便。

点评

-csize参数,在显示比例大于等于150%时,关闭按钮下边距开始变大(测试环境是 Windows 11) 250% [attachimg]542466[/attachimg] 225% [attachimg]542465[/attachimg] 200% [attachimg]542464[/attachimg]  详情 回复 发表于 2024-5-31 11:23
回复

使用道具 举报

发表于 2024-5-30 20:39:33 | 显示全部楼层
527104427 发表于 2024-5-30 19:47
1.窗口的标题栏你没算上吧?窗口标题栏高度+tabl 高度=窗口高度
2.给tabl 设置一个渐变度,就能将标头区 ...

确实没算标题栏
回复

使用道具 举报

发表于 2024-5-30 20:40:07 | 显示全部楼层
mdyblog 发表于 2024-5-30 20:17
跑到窗口外面去了。 窗口太小。
你的窗口大小,包括 边框。 刨掉边框, 窗口 不够显示的。
...

明白了
回复

使用道具 举报

 楼主| 发表于 2024-5-30 23:28:30 | 显示全部楼层
最新GD版。 数据部分放一个显式字面的 空格, 会加一行再删掉该行。 这样水平滚动条 会自动显示出来。
回复

使用道具 举报

发表于 2024-5-30 23:55:51 | 显示全部楼层
This is great stuff.
回复

使用道具 举报

发表于 2024-5-31 09:25:28 | 显示全部楼层
楼主威武
回复

使用道具 举报

发表于 2024-5-31 11:23:52 | 显示全部楼层
本帖最后由 Anson4 于 2024-5-31 11:25 编辑

-csize参数,在显示比例大于等于150%时,关闭按钮下边距开始变大(测试环境是 Windows 11)。
_TEST_SCALE_CSIZE.zip (1.71 KB, 下载次数: 8)
250%
csize-250%.jpg
225%
csize-225%.jpg
200%
csize-200%.jpg
175%
csize-175%.jpg
150%
csize-150%.jpg
125%
csize-125%.jpg
100%
csize-100%.jpg
回复

使用道具 举报

发表于 2024-5-31 15:26:38 | 显示全部楼层
  1. `ENVI -mode EnviMode=1
  2. ENVI A1=123456
  3. ENVI N=1
  4. ENVI B=%A%N%%
  5. MESS %B%
复制代码
想实现数组下标相似的功能,请教大家一个问题,上述代码怎么在EnviMode=1的时候也有效,要怎么写,就是等号后面的变量要解释两次就对了,是不是要用“~”符号

点评

还有一种 SET~ B=A%N% 右边 当做变了名  详情 回复 发表于 2024-5-31 20:10
回复

使用道具 举报

发表于 2024-5-31 15:51:03 | 显示全部楼层
本帖最后由 红毛樱木 于 2024-5-31 15:52 编辑
hhh333 发表于 2024-5-31 15:26
想实现数组下标相似的功能,请教大家一个问题,上述代码怎么在EnviMode=1的时候也有效,要怎么写,就是等号 ...
  1. ENVI^ EnviMode=1
  2. ENVI A1=123456
  3. ENVI N=1
  4. ^ENVI B=%%A%N%%%
  5. MESS %B%
复制代码

A%N%当做变量处理,先^解释一下
回复

使用道具 举报

 楼主| 发表于 2024-5-31 20:10:17 | 显示全部楼层
hhh333 发表于 2024-5-31 15:26
想实现数组下标相似的功能,请教大家一个问题,上述代码怎么在EnviMode=1的时候也有效,要怎么写,就是等号 ...

还有一种
ENVI~    B=A%N%
右边 当做 变量名
回复

使用道具 举报

发表于 2024-6-1 05:49:14 来自手机 | 显示全部楼层
本帖最后由 hhh333 于 2024-6-1 05:55 编辑

怎么用sed去除字符串从右边开始的第一个回车换行符?看说明似乎有,但不知如何用

点评

还可以 RPOS* ENVI^ EnviMode=1 SET$ &NL=0d 0a SET &v1=111%&NL%222%&NL%333 RPOS* &&i=%&NL%,1,%&v1% IFEX #%i%  详情 回复 发表于 2024-6-1 12:13
MS(DOS/WIN) 的回车换行符是 2个 字符 0x0d 0x0a SET$ &NL=0d 0a SET &v1=111%&NL%222%&NL%333 SED &v2=,%&NL%,,%&v1% MESS. v1[%&NL%%&v1%]%&NL% v2[%&NL%%&v2%]%&NL% [%&v2?short:~3%] -----------  详情 回复 发表于 2024-6-1 11:02
回复

使用道具 举报

发表于 2024-6-1 09:09:52 | 显示全部楼层
liangnijian 发表于 2024-6-1 09:06
\n 表示换行
SED A=1,\n,,%A%

这个是从左边开始的
回复

使用道具 举报

发表于 2024-6-1 09:40:37 | 显示全部楼层
还是不对
  1. ENVI A=AAAAA%nl%
  2. ENVI B=BBBBB
  3. ENVI C=%A%%B%%A%%B%
  4. SED D;/=1,%nl%,,%C%
  5. MESS %C%%nl%%nl%%D%
复制代码
回复

使用道具 举报

 楼主| 发表于 2024-6-1 11:02:06 | 显示全部楼层
本帖最后由 mdyblog 于 2024-6-1 11:57 编辑
hhh333 发表于 2024-6-1 05:49
怎么用sed去除字符串从右边开始的第一个回车换行符?看说明似乎有,但不知如何用

MS(DOS/WIN) 的回车换行符是 2个 字符 0x0d  0x0a
SET$ &NL=0d 0a
SET &v1=111%&NL%222%&NL%333
SED  ;&&n=?0,%&NL%,,%&v1% //总次数
CALC  #&&n_1=%&n% - 1  //右边
SED &v2=1:%&n_1%,%&NL%,,%&v1%
MESS.   v1[%&NL%%&v1%]%&NL%  v2[%&NL%%&v2%]   //右边

-----------------------------
  v1[
111
222
333]
  v2[
111
222333]




点评

这个也还算简洁,但要两次SED 第一次得到字符出现次数,第二次利用跳过总次数减1,刚好是倒数第一个  详情 回复 发表于 2024-6-1 18:48
回复

使用道具 举报

 楼主| 发表于 2024-6-1 12:13:07 | 显示全部楼层
hhh333 发表于 2024-6-1 05:49
怎么用sed去除字符串从右边开始的第一个回车换行符?看说明似乎有,但不知如何用

还可以 RPOS*

ENVI^ EnviMode=1
SET$ &NL=0d 0a
SET &v1=111%&NL%222%&NL%333
RPOS*  &&i=%&NL%,1,%&v1%
IFEX #%i%<=0,  //没有
{*  SET~ &v2=&v1
}!
{*
CALC &i1=%&i%-1
CALC &i2=%&i%+1
^SET v2=%%&V1:~0,%&i1%%%%%&V1:~%&i2%%%
}

MESS [%&v2%]

--------------
[111
222333]

点评

我以为sed可以从右边开始替换。 如果没有看来用rpos好理解一些  详情 回复 发表于 2024-6-1 18:27
回复

使用道具 举报

发表于 2024-6-1 13:32:48 | 显示全部楼层
liangnijian 发表于 2024-6-1 12:44
这个SED有点疑惑,还是说我的写法有问题。(名/行名前~则从右计算位置)
SED B;/=1,.*4,,%A% 加上 .* 这 ...

.*是贪婪匹配吧,尽可能匹配多
回复

使用道具 举报

发表于 2024-6-1 14:43:38 | 显示全部楼层
m大要不要搞个结构体自动对齐

点评

具体什么意思, 来个例子  详情 回复 发表于 2024-6-1 16:18
回复

使用道具 举报

 楼主| 发表于 2024-6-1 16:08:03 | 显示全部楼层
liangnijian 发表于 2024-6-1 12:44
这个SED有点疑惑,还是说我的写法有问题。(名/行名前~则从右计算位置)
SED B;/=1,.*4,,%A% 加上 .* 这 ...

这个说的是查询
ENVI A=12345
SED  ~I=?,2,,%A%   //I=4
回复

使用道具 举报

 楼主| 发表于 2024-6-1 16:18:01 | 显示全部楼层
泮安宁 发表于 2024-6-1 14:43
m大要不要搞个结构体自动对齐

具体什么意思, 来个例子

点评

64位系统,_CRYPTOAPI_BLOB总大小16个字节, cbData4个字节,pbData要偏移8字节而不是偏移4字节紧跟在 cbData后面,好像是结构体总大小和结构体成员的起始位置都是8的倍数  详情 回复 发表于 2024-6-1 16:34
回复

使用道具 举报

发表于 2024-6-1 16:34:27 | 显示全部楼层
本帖最后由 泮安宁 于 2024-6-1 16:37 编辑
mdyblog 发表于 2024-6-1 16:18
具体什么意思, 来个例子
  1. typedef struct _CRYPTOAPI_BLOB {
  2.                             DWORD   cbData;
  3. BYTE    *pbData;
  4. }
复制代码

64位系统,_CRYPTOAPI_BLOB总大小16个字节, cbData4个字节,pbData要偏移8字节而不是偏移4字节紧跟在 cbData后面,好像是结构体总大小和结构体成员的起始位置都是8的倍数

Screenshot_2024-06-01-16-36-55-258_com.yjllq.kito.png
回复

使用道具 举报

发表于 2024-6-1 18:27:03 | 显示全部楼层
本帖最后由 hhh333 于 2024-6-1 18:32 编辑
mdyblog 发表于 2024-6-1 12:13
还可以 RPOS*

ENVI^ EnviMode=1

我以为sed可以从右边开始替换。
如果没有看来用rpos好理解一些
  1. ENVI^ EnviMode=1
  2. ENVI. nl=\n
  3. ENVI A=AAAAA%nl%
  4. ENVI B=BBBBB
  5. ENVI C=%A%%B%%A%%B%
  6. RPOS* N=%nl%,1,%C%
  7. IFEX #%N%>0,
  8. {
  9.         CALC I=%N%-1
  10.         LSTR S=%I%,%C%
  11.         CALC I=%N%+2
  12.         MSTR E=%I%,0,%C%
  13.         ENVI D=%S%%E%
  14. }
  15. MESS %C%%nl%%nl%%D%
复制代码
另外,不知道mstr有不有取倒数第一部分,和取除倒数第一部的所有部分的功能(或者取第一到倒数第一部分之间的部分),如果有的话也好解决。但最好还是sed能够提供,倒数替换的功能,那就一条语句就解决了

回复

使用道具 举报

发表于 2024-6-1 18:48:12 | 显示全部楼层
mdyblog 发表于 2024-6-1 11:02
MS(DOS/WIN) 的回车换行符是 2个 字符 0x0d  0x0a
SET$ &NL=0d 0a
SET &v1=111%&NL%222%&NL%333

这个也还算简洁,但要两次SED
第一次得到字符出现次数,第二次利用跳过总次数减1,刚好是倒数第一个

点评

GF版 , SED可反向替换ENVI^ EnviMode=1 SET$ &NL=0d 0a SET &v1=111%&NL%222%&NL%333 SED &v2=-1,%&NL%,,%&v1% MESS. v1[%&NL%%&v1%]%&NL% v2[%&NL%%&v2%] ----------------------------------------  详情 回复 发表于 2024-6-2 00:16
回复

使用道具 举报

 楼主| 发表于 2024-6-2 00:16:49 | 显示全部楼层
hhh333 发表于 2024-6-1 18:48
这个也还算简洁,但要两次SED
第一次得到字符出现次数,第二次利用跳过总次数减1,刚好是倒数第一个

GF版 , SED可反向替换ENVI^ EnviMode=1
SET$ &NL=0d 0a
SET &v1=111%&NL%222%&NL%333
SED &v2=-1,%&NL%,,%&v1%
MESS.   v1[%&NL%%&v1%]%&NL%  v2[%&NL%%&v2%]

----------------------------------------
  v1[
111
222
333]
  v2[
111
222333]

点评

这么快,不错,我试一下  详情 回复 发表于 2024-6-2 11:23
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-16 08:53

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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