VB编写摇奖程序

这篇博客讲述了如何使用VB编写一个电脑摇奖程序,通过监听键盘的keydown事件,尤其是回车和空格键,来实现摇奖的开始和停止。程序中使用API函数PeekMessage来捕获键盘消息,读取预先准备的摇奖号码数组,并在每次摇奖后更新已摇出的号码,确保不会重复摇到同一个号码。
摘要由CSDN通过智能技术生成

学院搞活动,有个环节是抽奖,要求我帮他们写一个电脑摇奖的程序,就像电视的综艺界面一样按回车开始,按空格停下来。开始的时候没有仔细的想,以为没有什么难度就欣然的答应了,开始写的时候才发现,需要在外部通过条件判断强制的中断无限的循环。脑子里第一个想到的就是用多线程,可是大家都知道,如果用VB想使用多线程难度是非常大的。如果只用普通的单线程就必须找到一个方法捕捉到键盘的响应并中断循环。于是想到了去捕获消息,具体的想法就是想试一下在循环的过程中看看可不可以捕捉到键盘keydwon的消息。按照需求就有两个API可以使用一个是getmessage,一个是peekmessage,由于我们只是需要监视是否发生了键盘空格键keydown事件,并不需要拦截消息,所以这里选择peekmessage更为适合。

关键的问题解决了,其他的都好办了,备摇的号码用记事本事先记录,程序中在窗体load事件里读取到数组中,读取的时候因该打乱号码的顺序,这里简单的采用一前一后的方法读取。为了保证摇到的号码不会再摇到,所以要记录被摇到的号码在数组中的index以便在循环的时候跳过。大体的思路就是这个样子的。具体的代码如下:

Option Explicit

Dim data() As String, del() As Integer, index As Integer

 

‘API函数声明

Private Const PM_REMOVE = &H1

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

Private Type POINTAPI

    x As Long

    y As Long

End Type

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值