想了很久都没有明白,难道vb连这样的功能都无法实现?(Loop语句,内有代码)

ipman 2003-09-12 05:29:41
Option Explicit
Dim bExit As Boolean
Private Sub Command1_Click()
Do While Not bExit
Command1.Caption = Time
DoEvents
Loop
End Sub

Private Sub Command2_Click()
Do While Not bExit
Command2.Caption = Time
DoEvents
Loop
End Sub

Private Sub Form_Unload(Cancel As Integer)
bExit = True
End Sub

每次点击command1时,command2就停,vb功能真弱
...全文
47 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
SnHnBn 2003-09-23
  • 打赏
  • 举报
回复
呵呵,楼主都不会针对应用选工具。喜欢拿着牛刀去杀鸡,当然你刀法高明无话可说。
ipman 2003-09-23
  • 打赏
  • 举报
回复
TechnoFantasy(www.applevb.com)
你的demo运行完1分钟后非法?
无法看到到底哪个准啊?
vansoft 2003-09-23
  • 打赏
  • 举报
回复
TechnoFantasy(www.applevb.com)
这个人好象我刚才在哪见过?
哦!就是漏了个数组的那人吧?
TechnoFantasy 2003-09-23
  • 打赏
  • 举报
回复
如果不是多CPU的系统的话,开多线程跟单线程没什么太大的区别,如果你要求10ms以下的计时的话,可以参考:
http://www.applevb.com/art/timing.htm
利用里面提到的多媒体计时器。但是你需要确保你的一个执行要可以在10ms以内完成。

BTW:在做类似视频采集这方面的程序时,VB不是强项,建议选择VC。
ipman 2003-09-22
  • 打赏
  • 举报
回复
我也知道多线程和timer能解决,只不过我有小于10ms执行的圈圈,timer不能达到我的要求,多线程我就不提了(vb的先天不足我也不想后天去补),本想挑挑大家的斗志,没想招来一堆砖头。
还是谢谢大家!
mvp lihonggen0请注意:
我是需要同时从视频卡采集多路视频图像到vga,通过loop我能在第一时间知道视频帧采集完毕(每分钟30帧)并处理(用Timer明显有丢帧现象),单个loop好像处理不过来,所以想通过多个loop,请教有何高见?
顺便说句,我用vb实现的loop循环采集数据cpu竟然占用80%,同样的实现vc才5%不到,高人指点?
XUZIFENG 2003-09-13
  • 打赏
  • 举报
回复
实际上可以互相补缺,VB 设计界面等简单,大的运算或硬件操作可交给C++来处理 然后VB调用DLL。
固执的大叔 2003-09-13
  • 打赏
  • 举报
回复
在编程中最好是不要用到死循环,这是一个不好的习惯!
你这个问题用Timer控件就很容易解决了!

这用VB是很容易就能解决的问题,你怎么能说VB弱呢?
无响应 2003-09-13
  • 打赏
  • 举报
回复
呵呵,很热闹呀!不过这里的问题倒是不是太难,你们话都说完了,我也无话说了!
lgxysl 2003-09-13
  • 打赏
  • 举报
回复
楼主那四个三角不知是怎么得的,我才两个,不到一分钟就把问题搞定了。不是我高明,而是VB太高明了。归根到底,这个楼主连DOEVENTS的工作机理、线程等基本概念没有弄清楚。我也骂过微软,因为她不让我在控件设计时使用end语句,其实现在想想,那是VB为我们想得太周到了,不想让我们设计出的东西老会出错。
killme2008 2003-09-13
  • 打赏
  • 举报
回复
我第一个学的是VB,你要是真懂API编程什么的就不会说这个了
是你技术不行,楼主,抱歉
viena 2003-09-13
  • 打赏
  • 举报
回复
呵呵
yunfeng007 2003-09-13
  • 打赏
  • 举报
回复
赫赫,在vb版里骂vb,送你俩字儿:找死!
newste 2003-09-13
  • 打赏
  • 举报
回复
强人
feiqinfeiwhw 2003-09-13
  • 打赏
  • 举报
回复
楼上的方法是正确的,我快已经试过!
lgxysl 2003-09-13
  • 打赏
  • 举报
回复
兄弟,想实现这个吗,简单得要死啦。我照晒你的代码来写,包行得通,不过你要及时给分呀。这点也控不掂,还用在广东捞!
Option Explicit
Dim bExit As Boolean
dim com1ok as boolean
dim com2ok as boolean
Private Sub Command1_Click()
if com1ok=false then
com1ok=true
else
com1ok=false
end if
Do While Not bExit
if com1ok then Command1.Caption = Time
if com2ok then command2.caption=time
DoEvents
Loop
End Sub

Private Sub Command2_Click()
if com2ok=false then
com2ok=true
else
com2ok=false
end if
Do While Not bExit
if com1ok then Command1.Caption = Time
if com2ok then command2.caption=time
DoEvents
Loop
End Sub

Private Sub Form_Unload(Cancel As Integer)
bExit = True
End Sub

实现功能,点击某一个command,那一个便开始显示时间,两个都点击,两个都显示;某一个再次点击,显示停止。如何?这是你想要的吧,给分呀。
其实解决这个问题的方案很多很多,VB真强大。

tanyx 2003-09-13
  • 打赏
  • 举报
回复
是你弱吧?
tfront 2003-09-12
  • 打赏
  • 举报
回复
用Timer就OK的拉。偶是准VB程序员,你不许说VB不好的拉。
tonton 2003-09-12
  • 打赏
  • 举报
回复
连基本问题都没搞清楚,
就想批评VB的功能弱,
年轻人就是这么浮澡,
一点儿也不虚心。
mjznet 2003-09-12
  • 打赏
  • 举报
回复
楼上,我有同感!!!!!!!!!!!!!!!
qixg 2003-09-12
  • 打赏
  • 举报
回复
这就是你们的不对了,我们都知道vb不如vc功能那么强,但至少你要举个适当的例子再说。这明明就是没有用正确的方法,同样的我也可以说“vc中窗体中的控件还要updata一下才能更新显示太低极了",如果这样你不笑我么?
再说线程,我单位里vb部门的就是在vb中用多显程,没遇到过什么不能就觉得问题呀。
下次说xx不好之前现想想自己真的理解它么?(主意是理解,不是了解)
加载更多回复(8)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧