易语言替换窗口回调处理自定义消息
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2018-10-30 19:27:01
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
使用易语言写多线程的程序时,需要实时的显示日志,而多线程中操作界面时会异常。于是就想着用自定义一个窗口消息来实现显示日志到指定控件,实现这个功能就需要用到三个api如下引入dll
.版本 2 .DLL命令 执行原窗口回调, 整数型, , "CallWindowProcA" .参数 窗口程序程序指针, 子程序指针 .参数 窗口句柄, 整数型 .参数 消息, 整数型 .参数 参数1, 整数型 .参数 参数2, 整数型 .DLL命令 发送文本消息, 整数型, , "SendMessageA" .参数 hWnd, 整数型 .参数 type, 整数型 .参数 l, 整数型 .参数 p, 文本型 .DLL命令 替换窗口回调, 子程序指针, , "SetWindowLongA" .参数 窗口句柄, 整数型 .参数 特征索引, 整数型 .参数 新特征, 子程序指针
窗口创建完毕后要用新的回调函数来替换旧的回调函数,旧的回调函数要保存到全局,因为后面还要使用,如下
旧窗口回调函数 = 替换窗口回调 (取窗口句柄 (), -4, &新窗口回调函数)
新的窗口回调函数格式是固定的如下
.版本 2 .子程序 新窗口回调函数, 整数型 .参数 窗口句柄_, 整数型 .参数 消息, 整数型 .参数 参数1, 整数型 .参数 参数2, 整数型 .局部变量 日志, 文本型 .如果真 (消息 = 9999) 日志 = 指针到文本 (参数2) 子_加入记录log (日志) .如果真结束 ' 下面调用原来的回调来处理其它消息,去掉就假死 返回 (执行原窗口回调 (旧窗口回调函数, 窗口句柄_, 消息, 参数1, 参数2))
上面自定义啦一个消息值为 9999 发送消息的方法如下
发送文本消息 (取窗口句柄 (), 9999, 0, “一个值 ”)
然后在回调里就可以根据这个消息来来取出相应的文本啦