无忧启动论坛

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

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

    [复制链接]
19171#
发表于 2024-5-30 13:26:53 | 只看该作者
回复

使用道具 举报

19172#
发表于 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-16-35.png (47.81 KB, 下载次数: 411)

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

使用道具 举报

19173#
发表于 2024-5-30 17:27:50 | 只看该作者
liangnijian 发表于 2024-5-30 17:25
LABE用来当按钮挺合适,但是目前按鼠标左键就执行命令了,能加一个参数:松开鼠标左键再执行命令 吗

WM_LBUTTONUP左键弹起消息
回复

使用道具 举报

19174#
发表于 2024-5-30 17:54:01 | 只看该作者
liangnijian 发表于 2024-5-30 17:35
LABE用不了吧,之前用SWIN写按钮,多几行命令,而且也麻烦


回复

使用道具 举报

19175#
发表于 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
复制代码
回复

使用道具 举报

19176#
发表于 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
复制代码

回复

使用道具 举报

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

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

回复

使用道具 举报

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

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

使用道具 举报

19179#
 楼主| 发表于 2024-5-30 20:39:11 | 只看该作者
527104427 发表于 2024-5-30 20:23
哦,原来加上-csize就一劳永逸了

对的。 方便。
回复

使用道具 举报

19180#
发表于 2024-5-30 20:39:33 | 只看该作者
527104427 发表于 2024-5-30 19:47
1.窗口的标题栏你没算上吧?窗口标题栏高度+tabl 高度=窗口高度
2.给tabl 设置一个渐变度,就能将标头区 ...

确实没算标题栏
回复

使用道具 举报

19181#
发表于 2024-5-30 20:40:07 | 只看该作者
mdyblog 发表于 2024-5-30 20:17
跑到窗口外面去了。 窗口太小。
你的窗口大小,包括 边框。 刨掉边框, 窗口 不够显示的。
...

明白了
回复

使用道具 举报

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

使用道具 举报

19183#
发表于 2024-5-30 23:55:51 | 只看该作者
This is great stuff.
回复

使用道具 举报

19184#
发表于 2024-5-31 09:25:28 | 只看该作者
楼主威武
回复

使用道具 举报

19185#
发表于 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%

225%

200%

175%

150%

125%

100%

回复

使用道具 举报

19186#
发表于 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的时候也有效,要怎么写,就是等号后面的变量要解释两次就对了,是不是要用“~”符号
回复

使用道具 举报

19187#
发表于 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%当做变量处理,先^解释一下
回复

使用道具 举报

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

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

使用道具 举报

19189#
发表于 2024-6-1 05:49:14 来自手机 | 只看该作者
本帖最后由 hhh333 于 2024-6-1 05:55 编辑

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

使用道具 举报

19190#
发表于 2024-6-1 09:09:52 | 只看该作者
liangnijian 发表于 2024-6-1 09:06
\n 表示换行
SED A=1,\n,,%A%

这个是从左边开始的
回复

使用道具 举报

19191#
发表于 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%
复制代码
回复

使用道具 举报

19192#
 楼主| 发表于 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]




回复

使用道具 举报

19193#
 楼主| 发表于 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]

回复

使用道具 举报

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

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

使用道具 举报

19195#
发表于 2024-6-1 14:43:38 | 只看该作者
m大要不要搞个结构体自动对齐
回复

使用道具 举报

19196#
 楼主| 发表于 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
回复

使用道具 举报

19197#
 楼主| 发表于 2024-6-1 16:18:01 | 只看该作者
泮安宁 发表于 2024-6-1 14:43
m大要不要搞个结构体自动对齐

具体什么意思, 来个例子
回复

使用道具 举报

19198#
发表于 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的倍数


回复

使用道具 举报

19199#
发表于 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能够提供,倒数替换的功能,那就一条语句就解决了

回复

使用道具 举报

19200#
发表于 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,刚好是倒数第一个
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-12-27 11:18

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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