用WaveInit创建对象正常,但是用WaveFree释放后,再创建显示的就是黑的 而且很不稳定偶尔一两次还会奇迹般的可以 sub q()
Dim ret As Long
DoEvents
ret = WaveInit(Me.hwnd, Me.Picture.Handle, 30, sRound)
If ret = 1 Then Unload Me
end sub
就是调用上面这个方法
然后用wavefree释放后 更换窗体背景图片 再调用 但是显示的就是黑的的了
Dim ret As Long
DoEvents
ret = WaveInit(Me.hwnd, Me.Picture.Handle, 30, sRound)
If ret = 1 Then Unload Me
end sub
就是调用上面这个方法
然后用wavefree释放后 更换窗体背景图片 再调用 但是显示的就是黑的的了
Public Enum WaveShape
sRound '圆形水波
sEllipse '椭圆型水波
End Enum
Declare Function WaveInit Lib "WaveObj.dll" Alias "_WaveInit" _
(ByVal hwnd&, ByVal hBmp&, ByVal dwSpeed&, ByVal dwType As WaveShape) As Long
Public Enum WaveType
wClose '关闭特效
wrain '下雨
wlaunch '汽艇
wWaves '风浪
End Enum
Declare Sub WaveEffect Lib "WaveObj.dll" Alias "_WaveEffect" _
(ByVal dwType As WaveType, ByVal dwParam1&, ByVal dwParam2&, ByVal dwParam3&)
Declare Sub WaveDropStone Lib "WaveObj.dll" Alias "_WaveDropStone" _
(ByVal dwX&, ByVal dwY&, ByVal dwSize&, ByVal dwWeight&)Declare Sub WaveUpdateFrame Lib "WaveObj.dll" Alias "_WaveUpdateFrame" (ByVal bIfForce As Boolean)Declare Sub WaveFree Lib "WaveObj.dll" Alias "_WaveFree" ()
Private Sub Form_Activate()
Dim ret As Long
DoEvents
ret = WaveInit(Me.hwnd, Me.Picture.Handle, 30, sRound)
If ret = 1 Then Unload Me
End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim LClickCount As Long
' Randomize
If Button = 1 Then
WaveDropStone X, Y, 2, 256
Else
LClickCount = Rnd * 3
Select Case LClickCount
Case 0
WaveEffect wlaunch, 5, 4, 250
Case 1
WaveEffect wWaves, 250, 4, 8
Case 2
WaveEffect wrain, 5, 4, 150
Case 3
WaveEffect wClose, 0, 0, 0
End Select
End If
End Sub
Private Sub Timer1_Timer()
WaveFree
me.picture.handle=loadpicture("c:\1.jpg")
Dim ret As Long
DoEvents
ret = WaveInit(Me.hwnd, Me.Picture.Handle, 30, sRound)
If ret = 1 Then Unload Me
End Sub
(泰山)sRound这个在waveobj.dll里应该是已经赋值了 因为没用wavefree释放对 是没问题的 一切正常
怎么用下面的?或者还有其他更好的?
Dim abyAsmCode(MAX_NUM) As Byte 然后用以下汇编代码对应的机器码填充之: push <倒数第1个参数地址>
push <倒数第2个参数地址>
push ...
push <第一个参数地址>
jmp < AAA地址 >(2)然后像这样调用: Call CallWindowProc(VarPtr(abyAsmCode(0)),0,0,0,0)
???
动态加载WaveObj.dll,问题解决了
就此结账