VC的代码看不明白,哪位能给翻译一下
各位老大,近来收到个项目,是用VC写的,有源码,想把部分功能转到VB下完成,可惜有些内容看不明白,哪位能给翻译一下,谢谢
例如:转到VB下怎么样写啊?
typedef UINT (AFX_CDECL *CALLBACK_PROC)(LPVOID);
MYFUNC1MV_SystemInit;
[解决办法]
typedef UINT (AFX_CDECL *CALLBACK_PROC)(LPVOID);
MYFUNC1MV_SystemInit;
===========================
LZ这活不轻松呀!估计不好转,这里的东东到底代表什么还得看源码,不是我说了算的
比如MYFUNC1这个可能是个结构体!!
跟你说种方法!你用VC把源码打开!!那里不明白是什么东东,就在那儿右键,然后有个go to defination去看看到底是怎么定义,要是你一点VC读不懂的话,你就别改了,你改不好!!
[解决办法]
你看看有用不 = =
myliupp++ 16:14:06
我这有个例子
myliupp++ 16:14:13
调用unzip32.dll的。
myliupp++ 16:14:22
里面需要Callback function
myliupp++ 16:14:27
VB是这样写的:
myliupp++ 16:14:41
'-- Set Callback Addresses
'-- (WARNING!!!) Do Not Change
UZUSER.UZDLLPrnt = FnPtr(AddressOf UZDLLPrnt)
UZUSER.UZDLLSND = 0& '-- Not Supported
UZUSER.UZDLLREPLACE = FnPtr(AddressOf UZDLLRep)
UZUSER.UZDLLPASSWORD = FnPtr(AddressOf UZDLLPass)
UZUSER.UZDLLMESSAGE = FnPtr(AddressOf UZReceiveDLLMessage)
UZUSER.UZDLLSERVICE = FnPtr(AddressOf UZDLLServ)
myliupp++ 16:14:57
'-- Puts A Function Pointer In A Structure
'-- For Callbacks.
Public Function FnPtr(ByVal lp As Long) As Long
FnPtr = lp
End Function
myliupp++ 16:16:08
就是一个函数名,用AddressOf运算符传进来(形参定义为ByVal),然后直接就将这个返回。
myliupp++ 16:16:48
UZUSER是USERFUNCTION类型,而USERFUNCTION的定义如下:
Private Type USERFUNCTION
UZDLLPrnt As Long ' Pointer To Apps Print Function
UZDLLSND As Long ' Pointer To Apps Sound Function
UZDLLREPLACE As Long ' Pointer To Apps Replace Function
UZDLLPASSWORD As Long ' Pointer To Apps Password Function
UZDLLMESSAGE As Long ' Pointer To Apps Message Function
UZDLLSERVICE As Long ' Pointer To Apps Service Function (Not Coded!)
TotalSizeComp As Long ' Total Size Of Zip Archive
TotalSize As Long ' Total Size Of All Files In Archive
CompFactor As Long ' Compression Factor
NumMembers As Long ' Total Number Of All Files In The Archive
cchComment As Integer ' Flag If Archive Has A Comment!
End Type
myliupp++ 16:17:09
就是说,地址指针值AS LONG
myliupp++ 16:18:20
typedef UINT (AFX_CDECL *CALLBACK_PROC)(LPVOID);