加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2016-03-09 21:59:43)
分类: 易语言

关于多线程中的载入窗口操作
━━━━━━━━━━━━━━━━━━━━━━━━━
因为载入(,,真),会导致线程阻塞,阻塞后窗口将无法收到任何消息,这样窗口就呈现了一个假死的状态,正确的做法应该是载入(,,假)

这样如果在DLL里面载入窗口的话,易语言编译的DLL是无法找到你注入的进程的消息队列的

这样就会导致 载入 "失效"? 即,载入的窗口没有消息队列,就无法处理窗口事件。这样就会导致两种情况,
1.窗口假死
2.窗口载入立即消失


正确的做法应该是 使用 载入(,,假) 先让窗口以非模态创建,这样不会导致线程阻塞,即窗口不会出现假死

 

正确的载入窗口代码:

  
子程序名 返回值类型 公开 备 注
新_载入窗口 整数型  
参数名 类 型 参考 可空 数组 备 注
lParam 整数型      
变量名 类 型 静态 数组 备 注
Msg MSG    
载入 (窗口1, , )
hWnd = 窗口1.取窗口句柄 ()
http://bbs.125.la/source/plugin/code_color/image/code1/13.png判断循环首 (GetMessage (Msg, 0, 0, 0))
http://bbs.125.la/source/plugin/code_color/image/code1/03.pngTranslateMessage (Msg)
http://bbs.125.la/source/plugin/code_color/image/code1/03.pngDispatchMessage (Msg)
http://bbs.125.la/source/plugin/code_color/image/code1/12.png判断循环尾 ()
返回 (0)



启动线程(&新_载入窗口)

 

  
DLL命令名 返回值类型 公开 备 注
GetMessage 逻辑型  
DLL库文件名:
user32.dll
在DLL库中对应命令名:
GetMessageA
参数名 类 型 传址 数组 备 注
lpMsg MSG  
hWnd 整数型    
wMsgFilterMin 整数型    
wMsgFilterMax 整数型    
DLL命令名 返回值类型 公开 备 注
TranslateMessage 整数型  
DLL库文件名:
user32.dll
在DLL库中对应命令名:
TranslateMessage
参数名 类 型 传址 数组 备 注
lpMsg MSG  


 

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有