VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 2488|回复: 8

[求助] Do...Loop一运行就结束!

[复制链接]
发表于 2015-12-1 14:44:42 | 显示全部楼层 |阅读模式
我想要的效果就是,只要不退击窗口上的X关闭,这个do...loop就一直循环,并且窗口不会假死!
  1. Option Explicit

  2. Private Type POINTAPI
  3.     X As Long
  4.     Y As Long
  5. End Type

  6. Private Type MSG
  7.     hwnd As Long
  8.     message As Long
  9.     wParam As Long
  10.     lParam As Long
  11.     time As Long
  12.     pt As POINTAPI
  13. End Type

  14. Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As MSG, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
  15. Private Declare Function TranslateMessage Lib "user32.dll" (ByRef lpMsg As MSG) As Long
  16. Private Declare Function DispatchMessage Lib "user32.dll" Alias "DispatchMessageA" (ByRef lpMsg As MSG) As Long

  17. Private Sub Command1_Click()
  18. Dim M As MSG
  19. Do While PeekMessage(M, 0, 0, 0, &H1)
  20.     TranslateMessage M
  21.     DispatchMessage M
  22. Loop
  23. MsgBox "循环结束"
  24. End Sub
复制代码
发表于 2015-12-2 18:18:21 | 显示全部楼层
Doevent
回复 支持 反对

使用道具 举报

发表于 2015-12-2 18:46:09 | 显示全部楼层
你到底想干什么?VB的窗口已经有消息循环了,你为什么要再写一个?你如果想循环执行的时候不假死,在循环里加个DoEvents就行了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-3 09:11:52 | 显示全部楼层
Apple_0 发表于 2015-12-2 18:46
你到底想干什么?VB的窗口已经有消息循环了,你为什么要再写一个?你如果想循环执行的时候不假死,在循环里 ...

我要显示一个窗口,不能用模式窗口,又必须在显示窗口后,代码不能继续往下执行,类似这样
form1.show
do
    doevents
loop
但是doevents会严重消耗CPU,所以不能用doevents
回复 支持 反对

使用道具 举报

发表于 2015-12-4 20:21:56 | 显示全部楼层
那你应该在模块中用 CreateWindow 来创建窗体
回复 支持 反对

使用道具 举报

发表于 2015-12-25 08:44:21 | 显示全部楼层
消耗CPU的不是doevents语句,而是do  loop循环。
想要循环,又少占用cpu资源,可以考虑用timer控件
回复 支持 反对

使用道具 举报

发表于 2016-1-4 16:02:40 | 显示全部楼层
多线程行不?
回复 支持 反对

使用道具 举报

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

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2022-7-5 11:38

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表