是因为win7的Aero和VB6不兼容的问题,你把Aero关掉就没有这个问题了,但是那样系统的其它软件也无Aero效果了,目前还没有更好的完美的解决方法。
毕竟VB6是98年的东西了。不太适应新系统了。
上位机软件接收大量数据并显示,会造成界面卡顿,可采用双缓冲技术,即将数据存到内存,再将其绘制到界面,比将数据直接绘制到界面要省很多时间
添加在子进程里面,就加在你批量传输代码里的每一个传输后面,也就是大批量中的每传输一个数据就暂停一下,而不是每一个大批量才暂停一下。
Private Sub Command1_Click()
s = 2
i = 2
Do While i <= 1000
If s <= i Then '执行判断时 s 和 i=2 ,条件成立,加入list1,但不会执行else后的句子,也就是说 I 一直为2 永远到不了1000
List1AddItem s
Else
If s Mod i > 0 Then
i = i + 1
Else
s = s + 1
End If
End If
Loop
End Sub
给你一个实例,你看看就能明白了
Private Sub Command1_Click()
Dim S As Long, I As Long
Do While I <= 1000
For S = 2 To I
If I Mod S = 0 Then Exit For
If S > I / 2 Then
List1AddItem I
Exit For
End If
Next
I = I + 1
Loop
End Sub
有以下几种情况:
1、死循环。这是最常见的。
2、循环很长,虽然没有死。
检查与查找的方法:
在没有响应时,按下ctrl-break(这两个按钮同时按下,break在小键盘上)。
然后可以看到**的光标条遮罩着一条语句,这条语句应该在一个循环之内。
使用鼠标放到结束循环的变量上,可以看到变量的值(如果结束条件有几个变量,分别检查)
在方便检查的语句上,设置断点(两种方法都可以。1、在语句左边的边框上点击;2、插入stop语句)
按F5键,执行就会听到断点,检查变量;再按F5,再检查。对比变量的变化,可以找出错误。
将Interval值设小点试试,是不是你设的是500,是的话就是停顿半秒触发一次。
试了试程序 不会卡的啊 是不是你电脑本身的问题,程序没有问题 不过-5000的话 标签回不去。
只能做成无标题栏的然后利用 mouse_move事件:
Option Explicit
Private hwnd_Avtive As Long '前台窗口句柄变量
'移动窗体声明
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'窗体风格设置声明
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
'转换前台窗口声明
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
'窗体无焦点风格常数
Private Const WS_DISABLED = &H8000000
Private Const GWL_EXSTYLE = (-20)
'移动窗体常数
Private Const WM_SYSCOMMAND = &H112 '查下
Private Const SC_MDIMOVE = &HF012& '?网上的这个为什么是这个数SC_MOVE = &HF012; API浏览器上为什么又是这个数Public Const SC_MOVE = &HF010&?
'载入时设为无焦点
Private Sub Form_Load()
SetWindowLong Mehwnd, GWL_EXSTYLE, WS_DISABLED ' 为什么要用EXSTYLE
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
hwnd_Avtive = GetForegroundWindow '获取前台窗口句柄
SetForegroundWindow Mehwnd '激活本窗体
ReleaseCapture '移动窗体(MousePointer = 0--鼠标形状缺省)
SendMessage Mehwnd, WM_SYSCOMMAND, SC_MDIMOVE, 0
SetForegroundWindow hwnd_Avtive '重新激活前台窗口
End Sub
以上就是关于vb 6.0在Win 7 中画控件卡,那种一顿一顿的。为什么全部的内容,包括:vb 6.0在Win 7 中画控件卡,那种一顿一顿的。为什么、使用vb.net接收大量串口数据时,界面卡顿、vb程序卡死了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)