游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2243|回复: 2

[API]想在扫雷程序里添个假雷,遇到了一点麻烦,有人可指

[复制链接]

5

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2006-4-27 22:15:00 | 显示全部楼层 |阅读模式
我最近刚刚深入研究API 想在扫雷游戏的雷区上添个假雷,迷惑玩家(恶搞外挂,意义不大,只是想试试)

先暂时用椭圆函数来做例子

Private Sub Command1_Click()
Dim sljb As Long, sbjb As Long, winrect As RECT,laosbjb as Long
sljb = FindWindow(vbNullString, "扫雷")                  '寻找游戏窗口的句柄
If sljb = 0 Then
   Label1.Caption = "对不起没找到"
   Exit Sub
End If
If sljb <> 0 Then Label1.Caption = "找到了 句柄是" & Str(sljb)
sbjb = GetDC(sljb)                                   '获得该窗体的设备句柄
Label2.Caption = "设备句柄是" & Str(sbjb)
laosbjb = sbjb                                           '将老设备句柄保留
Ellipse sbjb, 20, 20, 10, 10                       '在一个定点画雷
GetWindowRect sljb, winrect                    '获得扫雷游戏的窗口大小
BitBlt sbjb, 0, 0, winrect.Right - winrect.Left, winrect.Bottom - winrect.Top, laosbjb, 0, 0, vbSrcCopy       '这里大家都应该了解,在刚才画椭圆下windows是先在hDC中绘图,然后用GetDC来创建临时与窗体关联的设备场景,然后把hDC的内容拷到这个临时缓冲设备场景中来最终显示图形。这条语句则等效于强制重画,防止窗体被挡住后"雷"的消失.
ReleaseDC sljb, sbjb
End Sub

我自认为已经想的十分周全了,但是程序执行时雷是画上去了.但遮挡后还是消失了.
谁能告诉我这是怎么回事.希望有高人指出我之不足,谢谢!
[em7]

10

主题

62

帖子

68

积分

注册会员

Rank: 2

积分
68
发表于 2006-4-27 22:52:00 | 显示全部楼层

Re:[API]想在扫雷程序里添个假雷,遇到了一点麻烦,有人可指

单这段来说,BitBlt毫无意义

最简单的解决办法是将你的这段代码放在Timer事件中
每隔一秒重画一次

5

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
 楼主| 发表于 2006-4-29 22:26:00 | 显示全部楼层

Re:[API]想在扫雷程序里添个假雷,遇到了一点麻烦,有人可指

这个简单方法我怎么就没想到呢~~还是谢谢了 原来的方法可能压根就行不通,还是高估了api
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 08:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表