开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: 独倚斜阳
收起左侧

[易语言纯源码] 基于阿婆的完成端口输出日志 模块源码带例程 增加写出log

[复制链接]
结帖率:97% (98/101)
 楼主| 发表于 2024-3-20 10:28:35 | 显示全部楼层   重庆市重庆市
aismy 发表于 2024-3-20 08:22
无法绑定右键 左键等事件?我方法不对吗? 请指教!
[e=0].版本 2

他其实是模块源码里面是超级编辑框....

他把超级编辑框复制到了 外形框组件?

我对易语言的控件不熟悉
回复 支持 反对

使用道具 举报

结帖率:100% (503/505)

签到天数: 3 天

发表于 2024-3-20 08:22:05 | 显示全部楼层   重庆市重庆市
无法绑定右键 左键等事件?我方法不对吗? 请指教!
  
子程序名返回值类型公开备 注
_外形框1_鼠标右键被放开逻辑型 
参数名类 型参考可空数组备 注
横向位置整数型
纵向位置整数型
功能键状态整数型
弹出菜单 (aaaa, , )
子程序名返回值类型公开备 注
_外形框2_鼠标左键被按下逻辑型 
参数名类 型参考可空数组备 注
横向位置整数型
纵向位置整数型
功能键状态整数型
调试输出 (“_外形框2_鼠标左键被按下”)


i支持库列表   支持库注释   
spec特殊功能支持库


回复 支持 反对

使用道具 举报

签到天数: 3 天

发表于 2024-3-20 07:42:31 | 显示全部楼层   江西省鹰潭市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2024-3-19 16:16:25 | 显示全部楼层   湖南省邵阳市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)
发表于 2024-3-19 15:39:32 | 显示全部楼层   河北省石家庄市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:97% (98/101)

签到天数: 3 天

 楼主| 发表于 2024-3-19 15:37:01 | 显示全部楼层   重庆市重庆市
阿婆 发表于 2024-3-19 10:33
感谢分享 这么老的帖子没想到还有人关注 自用的已把线程换成了定时器也加入了写文件 表现似乎更好的同时代 ...

你这个有程序集 变量啊?是程序集+类么?能不能打包个文件发一下
回复 支持 反对

使用道具 举报

结帖率:97% (98/101)

签到天数: 3 天

 楼主| 发表于 2024-3-19 14:52:59 | 显示全部楼层   重庆市重庆市
阿婆 发表于 2024-3-19 10:33
感谢分享 这么老的帖子没想到还有人关注 自用的已把线程换成了定时器也加入了写文件 表现似乎更好的同时代 ...

我最讨厌计时器了 始终觉得计时器会出问题啊  我去拿你的测试下
回复 支持 反对

使用道具 举报

结帖率:90% (27/30)
发表于 2024-3-19 12:42:32 | 显示全部楼层   山东省济宁市
多谢分享~
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2024-3-19 10:33:05 | 显示全部楼层   江苏省连云港市
感谢分享 这么老的帖子没想到还有人关注 自用的已把线程换成了定时器也加入了写文件 表现似乎更好的同时代码也更轻量 以下是参考 只有一个类 原理不变 缺失的常规函数还请自行补全
  
窗口程序集名保 留  保 留备 注
超级日志框, , 公开   
变量名类 型数组备 注
m_IOCP整数型  
m_OnTimerProc整数型  
m_Window整数型  
m_Edit超级编辑框  
m_Font字符格式  
m_MaxLine整数型  
m_EditLine整数型  
m_FileLine整数型  
m_Dir文本型  
m_Name文本型  
m_File整数型  
m_Level整数型  

子程序名返回值类型公开备 注
_初始化 当基于本类的对象被创建后,此方法会被自动调用
m_OnTimerProc = 类回调取地址 (2, 4, , )
m_IOCP = CreateIoCompletionPort (-1, 0, 0, 0)  ' 创建完成端口
子程序名返回值类型公开备 注
_销毁 当基于本类的对象被销毁前,此方法会被自动调用
解除 ()
类回调释放 (m_OnTimerProc)
如果真 (m_File > 0)
关闭文件 (m_File)
CloseHandle (m_IOCP)
子程序名返回值类型公开备 注
__WindowProc整数型 
参数名类 型参考可空数组备 注
hWnd整数型
msg整数型
wParam整数型
lParam整数型
变量名类 型静态数组备 注
oldproc整数型 
时间整数型 
级别整数型 
指针整数型 
内容文本型3时间 级别 内容
颜色整数型3颜色 颜色 颜色
i整数型 
oldproc = GetPropA (hWnd, “__WindowProc_Timer”)
判断 (msg = #WM_TIMER )
如果真 (GetQueuedCompletionStatus (m_IOCP, 时间, 级别, 指针, 0))  ' 本身会线程安全,无需加锁
颜色 [1]MemGetInt (指针, 0)
颜色 [2]多项选择 (级别, #墨绿, #橙黄, #红色 )
颜色 [3]MemGetInt (指针, 4)
内容 [1]“[”TimeFormat (增减时间 (到时间 (“1970-01-01 08:00:00”), #秒, 时间), , )“] ”
内容 [2]多项选择 (级别, “[信息] ”, “[警告] ”, “[错误] ”)
内容 [3]MemGetText (指针, 8, )#换行符
MemFree (指针)
' 优先处理写文件
如果真 (m_Dir ≠ “” 级别 ≥ m_Level)
如果真 (m_File = 0)
m_File = 打开文件 (m_Dir + m_Name + “_”TimeFormat (, “yyyyMMdd”, “_HHmmss”)“.log”, #重写, #无限制 )
移到文件尾 (m_File)

如果真 (m_File > 0)
写出文本 (m_File, 内容 [1] + 内容 [2] + 内容 [3])
m_FileLine = m_FileLine + 1
如果真 (m_FileLine ≥ m_MaxLine)
关闭文件 (m_File)
m_File = 0
m_FileLine = 0



' 更新UI
m_EditLine = m_EditLine + 1
如果真 (m_EditLine ≥ m_MaxLine)
m_Edit.内容 = “”
m_EditLine = 0

计次循环首 (3, i)
m_Edit.起始选择位置 = 取文本长度 (m_Edit.内容)
m_Font.文本颜色 = 颜色 [i]
m_Edit.置选择区字符格式 (m_Font)
m_Edit.被选择文本 = 内容 [i]
计次循环尾 ()

返回 (0)


返回 (CallWindowProc (oldproc, hWnd, msg, wParam, lParam))
子程序名返回值类型公开备 注
注册逻辑型 
参数名类 型参考可空数组备 注
编辑框超级编辑框组件:扩展界面支持库二.超级编辑框
字体文本型默认:微软雅黑
字号整数型默认:9
最大行数整数型日志框允许显示的最大行数(同:单个日志文件最大允许写入行数),默认:5200  换行标志CRLF
保存目录文本型指定日志文件保存的目录,默认:空(不写文件)
文件名称文本型日志文件名(不包含后缀)默认:“日志”
记录级别整数型日志记录级别(#信息 < #警告 < #错误),默认:#信息 表示全部记录
变量名类 型静态数组备 注
oldproc整数型 
m_MaxLine = 选择 (最大行数 ≤ 0, 5200, 最大行数)
m_Font.文本颜色 = #黑色
m_Font.字体名称 = 选择 (字体 = “”, “微软雅黑”, 字体)
m_Font.字体大小 = 选择 (字号 ≤ 0, 9, 字号)
m_Level = 选择 (记录级别 ≥ 1 记录级别 ≤ 3, 记录级别, 1)
m_Name = 选择 (文件名称 = “”, “日志”, 文件名称)
m_Dir = 保存目录
如果真 (m_Dir ≠ “”)
如果真 (DirExist (m_Dir))
DirCreate (m_Dir)


如果真 (是否已创建 (编辑框))
m_Edit = 编辑框
m_Edit.自动换行 = 假
m_Edit.只读 = 真
m_Edit.隐藏选择 = 假
m_Window = m_Edit.取窗口句柄 ()
oldproc = GetPropA (m_Window, “__WindowProc_Timer”)
如果真 (oldproc = 0)
oldproc = SetWindowLongA (m_Window, #GWL_WNDPROC, m_OnTimerProc)
SetPropA (m_Window, “__WindowProc_Timer”, oldproc)

返回 (SetTimer (m_Window, m_Window, 10, 0) ≠ 0)
返回 ()
子程序名返回值类型公开备 注
解除 
变量名类 型静态数组备 注
hWnd整数型 
oldproc整数型 
KillTimer (m_Window, m_Window)
oldproc = GetPropA (m_Window, “__WindowProc_Timer”)
如果真 (oldproc ≠ 0)
SetWindowLongA (m_Window, #GWL_WNDPROC, oldproc)
RemovePropA (m_Window, “__WindowProc_Timer”)

子程序名返回值类型公开备 注
加入日志逻辑型 
参数名类 型参考可空数组备 注
日志内容文本型日志内容,末尾无需带换行
日志级别整数型日志级别,默认:#信息 (#信息 < #警告 < #错误)
日志颜色整数型日志颜色,默认:#黑色
时间颜色整数型时间颜色,默认:#天蓝
变量名类 型静态数组备 注
指针整数型 
时间整数型 
日志级别 = 选择 (日志级别 ≥ 1 日志级别 ≤ 3, 日志级别, 1)
如果真 (日志内容 = “”)
返回 ()

时间 = 取时间间隔 (取现行时间 (), 到时间 (“1970-01-01 08:00:00”), #秒 )
指针 = MemAlloc (取文本长度 (日志内容) + 1 + 8)
如果真 (指针 ≤ 0)
返回 ()
MemSetInt (指针, 0, 选择 (是否为空 (时间颜色), #天蓝, 时间颜色))
MemSetInt (指针, 4, 日志颜色)
MemSetText (指针, 8, 日志内容, )
返回 (PostQueuedCompletionStatus (m_IOCP, 时间, 日志级别, 指针))
子程序名返回值类型公开备 注
清空日志 
如果真 (是否已创建 (m_Edit))
m_Edit.内容 = “”
处理事件 ()

子程序名返回值类型公开备 注
定位日志 
参数名类 型参考可空数组备 注
文本文本型
变量名类 型静态数组备 注
行数组文本型0
i整数型 
可视行整数型 
如果真 (是否已创建 (m_Edit))
可视行 = m_Edit.取首可视行 ()
行数组 = 分割文本 (m_Edit.内容, #换行符, )
计次循环首 (取数组成员数 (行数组), i)
如果真 (寻找文本 (行数组 [i], 文本, , ) ≠ -1)
m_Edit.滚动 (i - 可视行 - 1)
跳出循环 ()

计次循环尾 ()
处理事件 ()


i支持库列表   支持库注释   
iext2扩展界面支持库二

评分

参与人数 2好评 +2 精币 +3 收起 理由
独倚斜阳 + 1 + 2 支持开源~!感谢分享
文西哥 + 1 + 1 感谢分享,很给力!~

查看全部评分

回复 支持 1 反对 0

使用道具 举报

签到天数: 1 天

发表于 2024-3-19 09:42:16 | 显示全部楼层   湖南省岳阳市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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