|
3楼
楼主 |
发表于 2004-2-8 20:18:00
|
只看该作者
文档和vb示例里:
~. R6 Y1 G j! v E" d...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As lpdata, ByVal lpMsg As String) As Long/ T7 M! j' q1 c* ` t7 Q
'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0( q4 i0 x s; T( _4 h- v @. |, x
'>> lpdata <<'这个结构不是必要的,只要是指向搜索值地址指针传过去就可以了(你的值要以0结尾,最少为你的值给足5个字节长度,长度最大250(最后一个0))
$ q& q. ? j& BPrivate Type lpdata'我选择只传送一个变量,如果是String的话,把数值弄到String里我没有好办法,这个结构解决了问题
* V" C5 u8 M* m7 U FirstFourByte As Long'这个是Byte的话违反VB的规则,没办法(我把所有的内容都放到了这个结构里,最后一个是0
/ {( ]0 K( ]5 F3 b7 N! R6 D LastByte(62) As long% q& W# A9 o; E" @# A! q$ S
End Type& l; V( T/ g# a9 L7 a
这做法纯粹是对vb的不了解造成的,可以声明为: d7 y/ }9 }0 t2 m: `
...Lib "GameSpyDll" (ByVal hwnd As Long, lpval As long, ByVal lpMsg As String) As Long5 A. q5 B- h* @. Q" j$ @" {" }8 q- s; n
'lpVal >>>> 指向要搜索的值,最后一位必须是0,这个指针指向的地址至少要有5个字节长的内容,包括最后一个0(vb里可以是个总共256字节长的数组,按地址传递第一个数组元素就可以了); H' o. k% J/ [$ N
这点在0.73c版的说明里纠正了,DLL和VB示例代码也作了像因修改
. y. p* e) r7 ?) P( R9 O' u5 q# U$ g' t! \6 e1 B
|
|