关于多线程中的载入窗口操作

分类: 易语言 |
关于多线程中的载入窗口操作
━━━━━━━━━━━━━━━━━━━━━━━━━
因为载入(,,真),会导致线程阻塞,阻塞后窗口将无法收到任何消息,这样窗口就呈现了一个假死的状态,正确的做法应该是载入(,,假)
这样如果在DLL里面载入窗口的话,易语言编译的DLL是无法找到你注入的进程的消息队列的
这样就会导致 载入 "失效"? 即,载入的窗口没有消息队列,就无法处理窗口事件。这样就会导致两种情况,
1.窗口假死
2.窗口载入立即消失
正确的做法应该是 使用 载入(,,假) 先让窗口以非模态创建,这样不会导致线程阻塞,即窗口不会出现假死
正确的载入窗口代码:
子程序名 | 返回值类型 | 公开 | 备 注 | ||||
新_载入窗口 | 整数型 | |
|||||
参数名 | 类 型 | 参考 | 可空 | 数组 | 备 注 | ||
lParam | 整数型 | |
|
|
变量名 | 类 型 | 静态 | 数组 | 备 注 | ||
Msg | MSG | |
|
hWnd = 窗口1.取窗口句柄
http://bbs.125.la/source/plugin/code_color/image/code1/13.png判断循环首
http://bbs.125.la/source/plugin/code_color/image/code1/03.pngTranslateMessage
http://bbs.125.la/source/plugin/code_color/image/code1/03.pngDispatchMessage
http://bbs.125.la/source/plugin/code_color/image/code1/12.png判断循环尾
返回
启动线程(&新_载入窗口)
DLL命令名 | 返回值类型 | 公开 | 备 注 | |
GetMessage | 逻辑型 | |
||
DLL库文件名: | ||||
user32.dll | ||||
在DLL库中对应命令名: | ||||
GetMessageA | ||||
参数名 | 类 型 | 传址 | 数组 | 备 注 |
lpMsg | MSG | √ | |
|
hWnd | 整数型 | |
|
|
wMsgFilterMin | 整数型 | |
|
|
wMsgFilterMax | 整数型 | |
|
DLL命令名 | 返回值类型 | 公开 | 备 注 | |
TranslateMessage | 整数型 | |
||
DLL库文件名: | ||||
user32.dll | ||||
在DLL库中对应命令名: | ||||
TranslateMessage | ||||
参数名 | 类 型 | 传址 | 数组 | 备 注 |
lpMsg | MSG | √ | |
前一篇:用标签的反馈事件执行多线程子程序
后一篇:神秘的主机名—bogon