//////////////////////////////////////////////////////////foxfunc.cpp
% [+ ~8 }' E/ W& }% N9 Y: h% M- L9 i8 m e" n( a' v
//FoxFunc.cpp : Defines the entry point for the DLL application.) W. _, D6 [& { w
//6 L. p v/ o q9 W/ e! H
#include<string.h>: `. A4 ^, u! h0 B3 g7 i
#include<stdio.h>
- H" W% O3 ^; P. R! R( y#include<io.h>
, I, b) Z" J& M; r#include<math.h>
! u/ f" V! C: R6 q#include<iostream>7 M1 q) a, |0 J* f% w" Y- n
#include"stdafx.h"& p& a$ z: ]& v5 L
#include"FoxFunc.h"* U7 |4 t0 E) Q* k/ J3 M1 T1 |8 I! A
usingnamespace std;8 ^$ U& V( t+ I% [. s
BOOLAPIENTRY DllMain( HANDLE hModule, 9 b) y$ r3 C2 o* A. F. ?
DWORDul_reason_for_call,
2 n. r! C, }2 z% ?9 [LPVOIDlpReserved
2 Y3 e5 f& }/ u6 J) R; G5 x0 _)
* K+ [9 R2 e) I% ~8 o# u; n{
8 l% Z/ N8 R! V& i+ O4 L$ F+ U6 [, Eswitch(ul_reason_for_call)
: \5 E. m" r- u* c{
5 L8 [3 W0 M; H# z0 X6 K# q9 o1 ecaseDLL_PROCESS_ATTACH:- e* n0 X8 l2 ]. N) E
caseDLL_THREAD_ATTACH:
2 o* l( z. @% P7 E4 x& y" n9 i6 r; G; WcaseDLL_THREAD_DETACH:, a1 K- v1 S' K% n6 j
caseDLL_PROCESS_DETACH:! ?7 m, k8 G; H- K
break;
, p/ i l+ e s}
6 X! w- r6 |0 @; E8 creturnTRUE;- V; B4 F: `* k" ~
}: B7 O1 P$ f- u0 s0 K& [
//计算收盘价的均价,一个常数参数,表示计算周期
& h! @7 t( l }% T//调用方法:+ N- d, b6 j. R4 Z0 W
//"FOXFUNC@MYMACLOSE"(5)
9 l% `+ k$ B, H: z! H, N8 j/*" J) X9 z! u5 Q2 Z" c9 s
//extern "C" double __cdecl ppow10(double ctemp,doublelength); - - - > wrong, extern "C" is to declare pow10coming from a .dll or .lib7 c5 M4 Y7 k9 J) l0 o" {4 A2 ]2 z
//extern "C" double ppow10(double ctemp,double length); - - -> both are the same; S0 y5 U; ~( X4 O6 o" R
*/
7 R0 i5 A! ]: mextern"C" double __cdecl ppow10(double ,double );/ r! a3 i$ O; |6 x2 G
//double ppow10(double ,double ); - @4 O( F8 K; u' @
//call pow10() by __cdecl! R/ |# u' T/ }- {6 ]* Z
//!!!!!!!! use "C" for Microsoft visual C++ compiler4 x: q3 p9 ~1 m2 o' C6 W1 z3 H
//!!!!!!!! use "C" for Microsoft visual C++ compiler: B R/ E5 j" R! t; ?5 J
//!!!!!!!! use "C" for Microsoft visual C++ compiler
& b8 y2 J6 V/ {2 m0 c$ |//!!!!!!!! use "C" for Microsoft visual C++ compiler3 b$ Z" @5 D6 v% C( W- i/ U5 ]
//!!!!!!!! use "C" for Microsoft visual C++ compiler7 W0 e! ~" H; ^/ D8 w
__declspec(dllexport)int WINAPI MYMACLOSE(CALCINFO* pData)
# J6 T' J" v+ |) B/ S5 k w{" O( K& \4 z8 ?6 [& o+ B6 [# `
if( // pData->m_pfParam1 && //参数1有效
! G, U9 Y9 m- L; t//pData->m_nParam1Start<0 && //参数1为常数 d8 i- l9 k0 Z5 L' y
//pData->m_pfParam2==NULL ) //仅有一个参数) }6 ?: ?7 C0 s9 B5 x# N. O
//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_pfParam49 a3 K- b7 R* E; v4 H( \- }9 F) |) @
//&& pData->m_pfParam5 && pData->m_pfParam6 &&pData->m_nParam1Start>=0 &&! |; X. F) J8 X% p4 u( V2 p! f$ B' C' n
//pData->m_pfParam7==NULL)
! g& ]4 Z. U) c7 g# ]//pData->m_pfParam1 && pData->m_pfParam2 &&pData->m_pfParam3 && pData->m_nParam1Start>=0 &&( W% \$ v7 \/ P
pData->m_pCalcParam[0].m_nParamStart>=0&& pData->m_pCalcParam[1].m_nParamStart>=0: V" h% ]. F4 n' J. _9 `# D
&&pData->m_pCalcParam[2].m_nParamStart>=0)
- ?. `3 [9 Q% Y- S9 J{
3 w; C9 ^% U3 a. E/ K& n/ a. ^floatfParam = *pData->m_pfParam4; //pointer ,pData->m_pCalcParam[3].m_nParamStart >= 0; h( V9 d) {8 a5 P; B/ z K1 ~0 }
intnPeriod = (int)fParam; //参数1: S& Q/ A- c' @8 |" o) G
//const float* cpParam = pData->m_pfParam2; // cpParam = pointer to ' p) N$ y) e A2 R# N
constfloat* cpParam2 =pData->m_pCalcParam[1].m_pfParam; // cpParam =pointer to
& P& u: \; {/ c% ]6 nconstfloat* cpParam3 =pData->m_pCalcParam[2].m_pfParam; // cpParam =pointer to
) d$ n9 ^% K$ u6 V' z+ `- G8 hconstfloat* cpParam4 =pData->m_pCalcParam[3].m_pfParam; // cpParam =pointer to * s& N- j6 j& R, D0 o5 ?- v& u k# W
//const float* cpParam5 =pData->m_pCalcParam[4].m_pfParam; //cpParam = pointer to 8 O6 y' @: O1 S0 f4 Y5 s Z& h& D
//in foxtraderoooq:"MYFUNC2010@MYMACLOSE"(c,c,c,6),colorffffff,linethick5;// cpParam5 =pData->m_pCalcParam[4].m_pfParam
# N* p r4 Z/ S- t$ G4 Q& B7 {* Z//pData->m_pCalcParam[5].m_fParam); //value! F- _5 [. ^ B; |, z
//const float* pValue1 = pData->m_pCalcParam[0].m_pfParam;* j* M; t9 a& ^& g `
//const float* pValue2 = pData->m_pCalcParam[1].m_pfParam;+ v8 c+ g! I- B6 Q \: H. C
//const float* pValue3 = pData->m_pCalcParam[2].m_pfParam;. M+ _1 P# A' C4 X2 b# k
//const float* pValue4 = pData->m_pCalcParam[3].m_pfParam;( ? B3 o: H# S) D; E+ D) v3 X
//const float* pValue5 = pData->m_pCalcParam[4].m_pfParam;! \' |- I h m/ f# w4 y" [
if(nPeriod>0)' C# u9 y" z8 k) \0 ~
{
5 U9 q; O+ {( a- {& [6 x* }" ~floatfTotal;3 O A7 n0 Y4 M' n- J& [9 w
inti, j;% y o! g- u. j G6 L) @0 U4 q% V
intndata = pData->m_nNumData;$ Z; t8 V/ B( a$ G' D- i8 ?
//float yy[5000][1];) O$ u6 x2 A) i2 J" v' c% K& ]
for( i = nPeriod-1; i < pData->m_nNumData; i++)//计算nPeriod周期的均线,数据从nPeriod-1开始有效
% M, I2 Q; W1 ^( S$ ?1 Y{! X1 T: Z" c: q( w
fTotal= 0.0f;
. U5 X& \" u: L* G4 H% M/ b) idoublelngth=5.0;
9 d- u- b# y' ]" [doublectemp=4.0;
/ W6 x2 M* H8 _6 S3 V//float yy1[5000][1];
. l3 C7 ^. I# h. u+ r% ^8 Pfor( j = 0; j < nPeriod; j++ ) //累加
7 d# G* r* f# w; Z! z{0 x) x7 y p' E! D: y# e6 W
fTotal= pData->m_pData.m_fClose; // @@@@@@@ vc++ 2010 cl.exe 使pData->m_pData[i-j].m_fClose错误
% p0 C+ _& d; d9 V# W8 }, [1 N6 ~}+ _3 V/ j% `7 G: o3 W2 }" N
//pData->m_pResultBuf = fTotal*1.03; //平均 s5 p, k, o! o9 i5 O* I6 f- X
fTotal= cpParam3;+ m, J- N- m) ?6 d# d4 \
pData->m_pResultBuf= fTotal*1.03; //平均 S/ c; E) Q) W) I, b7 _9 C- ]
//ctemp = (double) pData->m_pResultBuf; // double & - - - >overload a float value , double * - - - > overload a pointer todouble
+ N4 v, @& a; n! l* K2 Z//pData->m_pResultBuf= (float) ppow10(ctemp,lngth); // float &- - - > overload a float value" b& O! i, ?5 T
pData->m_pResultBuf=(float) ppow10( (double) pData->m_pResultBuf,lngth); // float &- - - > overload a float value, (float) = overload$ r0 `* ^9 p4 q; T: G* _
}
* O3 d* v2 k6 I+ v0 ureturnnPeriod-1;
" w1 N0 \6 ]3 w4 x# r}- r. o$ V4 n6 i0 P9 l
}
- w. C! L5 u( F+ |, k, S8 kreturn-1;
; ^; P; X3 h1 ~0 Q& }8 _}' I( O# q4 B# [3 m- o. s
//计算均价,2个参数,参数1为待求均线的数据,参数2表示计算周期
4 |- D5 D7 F" G//调用方法:# Z* G9 M0 Q8 [" z) [ i% Y
//"FOXFUNC@MYMAVAR"(CLOSE-OPEN,5)
# Y2 W9 Z7 q9 r9 G0 l' y__declspec(dllexport)int WINAPI MYMAVAR(CALCINFO* pData)
% T% w7 T7 n8 G! |* D, ?% Z{
+ `6 k' x( y% {1 Eif(pData->m_pfParam1&& pData->m_pfParam2 && //参数1,2有效
6 J; q& P" D; \& k6 @pData->m_nParam1Start>=0&& //参数1为序列数6 E0 y. }- i3 G
pData->m_pfParam3==NULL)//有2个参数
0 x$ x. |+ A4 S. b8 x( O{
4 u' V! i! v) b3 [constfloat* pValue = pData->m_pfParam1; //参数1
# R, ]; L# x- N& d' o- B8 PintnFirst = pData->m_nParam1Start; //有效值起始位
* _' _6 ?& X0 t# B' Q5 k2 bfloatfParam = *pData->m_pfParam2; //参数2
/ P+ {* H4 a' a6 \; EintnPeriod = (int)fParam;
: k. [5 Z; {- _- D; P3 T6 }if(nFirst >= 0 && nPeriod > 0 )% A; |. U) ~4 c A
{. c) S8 h$ t3 k8 h7 q. d! [4 t+ X2 C
floatfTotal;* [# ^+ E, N: B' j# R- S; u3 h
inti, j;7 W# c1 y# ~! N! i/ t( J
for( i = nFirst+nPeriod-1; i < pData->m_nNumData; i++ )% H ~3 g. T" L! B( \
{- j+ v M+ d% m5 d) ~7 Q0 ]
fTotal= 0.0f;
1 g9 C' @3 o( p1 x7 o, O) ffor( j=0; j < nPeriod; j++ ) //累加
) ]6 k0 ?6 f) W6 v) E6 Q( TfTotal+= pValue[i-j];* g7 [: \4 x5 I
pData->m_pResultBuf= fTotal/nPeriod;//平均5 J/ x9 v, t; e U; d8 ~: V+ F1 A
}
1 d D7 ]- n) }: N) k) CreturnnFirst+nPeriod-1;
, I: W8 y4 z9 B v" e" J}/ R" d G6 ^% P3 Z" t+ f
}/ B# Q" U/ _6 c$ h& F, q" @
return-1;! ]7 `. g% p! P% Z& E. Z& J
}
6 a: M) ?" F9 g, j% ]$ W& ^- C//计算多个序列的均值,5个参数,参数1-4为待求多个序列,参数5用于举例说明数值参数的用法,实际在此例中无需该参数1 x7 A) c3 i/ W& [+ v3 ^. z/ F) D
/*
- F/ w8 P% t5 O1 l9 y2 D* W调用方法:
3 i! a8 p! `7 ~3 N i; TMA1:=MA(CLOSE,3);9 X, m4 |7 L1 A/ w) u
MA2:=MA(CLOSE,6);$ z1 {2 Y" y7 J1 y
MA3:=MA(CLOSE,12);+ [% N' F1 J4 p& ?/ }6 ?
MA4:=MA(CLOSE,24);; x8 V2 K+ b3 l! e" Z# F' K; f# Z
MYBBI:"FOXFUNC@MYBBI"(MA1, MA2, MA3, MA4, 4);
* Q; P7 S0 Z2 ]; S6 r) |* {# f) J*/% k) y5 ]% o. M! |! s6 U
__declspec(dllexport)int WINAPI MYBBI(CALCINFO* pData)6 B1 T; D- t, d; i- M, C& ?# x) n
{
# `1 R3 _- s, O- K+ aif( pData->m_pCalcParam[0].m_nParamStart >= 0 &&( B) I6 x6 c J7 ^, S( v( m
pData->m_pCalcParam[1].m_nParamStart>= 0 &&
8 v f7 j Q5 P6 T3 w- u' }pData->m_pCalcParam[2].m_nParamStart>= 0 &&
. v5 ?0 C9 g4 {( c% N* T+ qpData->m_pCalcParam[3].m_nParamStart>= 0 ) //4个序列都含有效数值
0 K" N* i, M# }4 @( j{
8 o3 [: ~4 c. ^( U6 w$ r' m8 J//计算返回的序列的第一个有效值位置
6 H/ b3 T% |# F) b, XintnFirst = pData->m_pCalcParam[2].m_nParamStart;//已知返回的序列的第一个有效值位置与第4个序列一致
3 E& y! t* c) ^//若不知,则8 g7 ~' y2 P) Q2 R2 D
/*0 ~) T, ]# ?( Z: W) m
intnFirst = pData->m_pCalcParam[0].m_nParamStart;9 }' l1 A% }5 D0 `# ^1 ^( B4 }+ u
if( nFirst < pData->m_pCalcParam[1].m_nParamStart )
$ S8 i0 ?/ K. q4 AnFirst= pData->m_pCalcParam[1].m_nParamStart;
) \0 }' W8 O/ U8 I- p j& Oif( nFirst < pData->m_pCalcParam[2].m_nParamStart ) % F" H5 k5 n# s1 ]+ u6 [
nFirst= pData->m_pCalcParam[2].m_nParamStart;
; w- y6 N: s1 X. [0 Sif( nFirst < pData->m_pCalcParam[3].m_nParamStart ) " |4 J% J$ \8 q- K, z$ t6 |
nFirst= pData->m_pCalcParam[3].m_nParamStart;' r& N5 T( [6 G2 s8 r
*/: r- h: k" _6 A7 _0 z& o# R" V
constfloat* pValue1 = pData->m_pCalcParam[0].m_pfParam;
' B8 y+ w2 W3 Dconstfloat* pValue2 = pData->m_pCalcParam[1].m_pfParam;
7 W6 k9 t1 `$ B% vconstfloat* pValue3 = pData->m_pCalcParam[2].m_pfParam; f p0 N1 o5 p6 s3 C* P0 l
constfloat* pValue4 = pData->m_pCalcParam[3].m_pfParam;
2 a2 ]: r. l4 e5 \0 uconstfloat* pValue5 = pData->m_pCalcParam[4].m_pfParam;
! i [0 l+ v0 c0 z9 }& N; j% e Sconstfloat* pValue6 = pData->m_pCalcParam[5].m_pfParam;+ H6 u2 I t6 s% F. z6 W
//const float* pValue1 = pData->m_pfParam1;; r& D. h4 E& @- u2 D
//const float* pValue2 = pData->m_pfParam2;
: E3 M! d3 `( N6 v! B2 Q) J//const float* pValue3 = pData->m_pfParam3;' k+ m& p( T: `- K) w$ F9 F
//int nNum = (int)(*pData->m_pfParam4);//实际上该例中已知nNum=4,在此用于说明数值参数的用法; {4 P- L$ o9 {. X; V- Q2 l
intnNum = (int)(pData->m_pCalcParam[6].m_fParam);//实际上该例中已知nNum=4,在此用于说明数值参数的用法
1 T* I- `! j/ s2 F1 k3 ifor(int i = nFirst; i < pData->m_nNumData; i++ ), W2 B4 x- R" i6 t
{! X$ s# u; J e( z" ?
pData->m_pResultBuf=
' j9 P& Z2 J& x- B) c//(pValue1 + pValue2 + pValue3 )/nNum;
4 j2 U/ {5 O5 d$ T3 o' ]: @(pValue1+ pValue2 + pValue3 + pValue4+pValue5 + pValue6)/nNum;
7 j# \; e) v& I" v: a' @}
6 @/ g; N, W/ X; _: xreturnnFirst;) R/ {9 T8 C X! j1 n3 y
}3 i7 V7 m/ ^. h) B( [! s
return-1;
+ n7 ^6 H I5 s}
; R, t1 ~# q7 I) D
" Y5 M* U P4 |
- m2 L4 Z+ |: z! @" r7 W2 V! x- B# c: V. q# V. D k
//////////////////////////////////////////////////////////////pow10.asm9 C4 @( |) Z4 E+ Q( L
;*******************************************************
- W+ v- r- p0 ~) U( g5 }4 a" u- d;* *
4 a9 G6 r$ b) Q% f; J; k5 x;* Delphi Run Library * Z. C+ @1 D! ~: G- H& e, D! N$ \
;* *8 I6 Q( h$ p; W: r5 [6 f
;* Copyright (c) 1996,98 Inprise Corporation *
* D$ g7 m9 ~4 O1 M, y;*--------------------------------------------------------------------------/ h3 r+ F" b6 R
;* To compile "tasm32 /ml pow10.asm" */ i8 r( ]: B! t. ^" w, S: K; n2 P0 x
;*--------------------------------------------------------------------------: I% Y' B' [1 M& { c
;*******************************************************
8 \ r6 }$ u I. Q9 S8 x# o.386- E4 j" [$ @5 _/ y
;.MODEL flat,c (error must be in segement block must have segment
# d- w8 y: h% q- f/ q;!!!!!11 important if ',c' is not used , must use 'public _ppow10, and'_ppow10 proc'! w) |; d, `6 [; m# u0 A
;!!!!!11 important if .MODEL flat,c is not used , must use ;_TEXTSEGMENT WORD PUBLIC
t: d3 Y9 b. `6 s# g9 J! d+ ]6 u;'CODE'..._TEXT ENDS and must use 'public _ppow10 and '_ppow10 proc'& c" n. d0 {5 n' z3 ^
.MODELflat,c ; just use .code, no need for segment,!!!!!11 important if',c' is used , must use 'public ppow10, and 'ppow10 proc'
( h- N- U: `0 s;ppow10 PROTO,aVal:PTR REAL8, bVal:PTR REAL83 u9 k& W+ b$ Z2 U; V& y8 ^
;includeE:\Vsource\masm32\INCLUDE\windows.inc! T( l6 a0 z# i3 j% g4 B
;includeE:\Vsource\masm32\INCLUDE\user32.inc
3 m$ C; B6 `; [7 }% A' G;includeE:\Vsource\masm32\INCLUDE\kernel32.inc
M# [! m8 P* U, F# _* b4 IPUBLICppow10! Y) M6 j9 [( G& s5 Y
.CODE$ k" o6 l4 w5 j; h0 x* ~ R
;DllEntryproc hInstance:HINSTANCE, reason:DWORD, reserved1:DWORD4 ^$ L3 h6 O5 x- H/ p$ J! Y
;.if reason==DLL_PROCESS_ATTACH4 T% E. R: ]5 u2 | S
;invoke MessageBox,NULL,addr LoadMsg,addr AppName,MB_OK
/ O I) }: H6 e& d& [;.elseif reason==DLL_PROCESS_DETACH
2 n7 m1 x; |0 M$ h: ^9 r;invoke MessageBox,NULL,addr UnloadMsg,addr AppName,MB_OK
0 \5 V" A# L& p* y! R2 b/ u;.elseif reason==DLL_THREAD_ATTACH1 i5 v. n4 p5 p
;invoke MessageBox,NULL,addr ThreadCreated,addr AppName,MB_OK$ w7 U: N% C* O. V
;.else ; DLL_THREAD_DETACH( h3 h1 {( i' U: F
;invoke MessageBox,NULL,addr ThreadDestroyed,addr AppName,MB_OK
" y: }+ W2 Q1 `: ?. N4 U;.endif( O+ R3 o3 T6 u; `
;mov eax,TRUE
. Y9 p! f- u. t0 w( q' ];ret4 Q1 v+ N$ V% I7 D. K0 m0 W
;DllEntryEndp
# u# [# H4 r k# z;FUNCTION _Ppow10( double val, double pow: ) : Extended;- K$ q# Y9 w7 A6 b7 b/ `) C1 B8 S
;_TEXTSEGMENT WORD PUBLIC 'CODE'8 @- m/ [. o& b0 X5 I9 Q
;ppow10 PROC,aVal:PTR REAL8, bVal:PTR REAL8
3 z( J' r& h4 R6 }: E) D8 P) d;ppow10 PROC,aVal:* Qword, bVal:Qword
- J9 H+ q I( I# v6 \% oppow10PROC near
, C: X0 U1 J9 ]. a' ]7 R" TXUEQU 8 ; for eip & ebp ) u. ]" G7 |9 N9 H
XDEQU 0 ; for edi, esi, ebx, ecx, edx, ~2 ~7 E# |4 h( u: E# m0 I* c' c
fp_powerEQU QWORD PTR [ebp+XU+8]
5 C5 j k! W& ]fp_valEQU QWORD PTR [ebp+XU]
/ ~' d% |: p/ G" BvalEQU QWORD PTR [eBP-XD-8] ; USE STACK# q* t4 i& g [1 c
powerEQU QWORD PTR [eBP-XD-16] ; USE STACK
2 A9 t# m1 s! \pow10EQU QWORD PTR [eBP-XD-24] ; USE STACK) q$ {* `: E8 @& v
FPower10:. R1 X4 p+ j u, t' c/ u
pushebp# i6 K1 j$ ^- Q9 m
movebp,esp
7 T r ]3 d- a0 s7 I* ^0 J;push edi1 ~" J7 Y2 ~9 \# n; j
;push esi( E- J/ J- x6 t* V2 p) ]
;push eax3 b/ K" k* U* f$ A/ L8 Y
;push edx
8 J+ `% l4 {5 G8 @# y/ ]subesp,24
4 `. d" q' i) f/ f& K( VFINIT5 v! z. L5 d7 O$ x8 |" ?
fldz! K# o+ @+ R) v5 o% X; M
fstval" [+ ?% {5 v2 ?; G* [6 b6 ?; h |
fstpower
0 f& z( q8 w. p! _8 Zfstppow10& u. n) `7 R8 w4 @
MOV EAX,8 MOV EDX,8; fldpi; w4 H P/ f/ e
fld fp_val ;st(0)=val; fld aVal;st(0)=val$ }/ i" m- B( N+ [* U8 t! i4 u
fstval
; ]8 I; }8 J- K;fld Arg2 ;st(0)=power- L- K3 ?* z! y3 v
;fstp power1 I/ j3 X, P0 ^4 V
;fld val ;st(0)=val
+ \! ?8 H' l/ n; J8 |0 h, \- U;fmul val ;st(0)=val*val' ~; ~* v3 C4 t: h5 ?/ \
;fmul val ;st(0)=val*va*val
; j: F, W; J; t: B% z;fadd st,st(0)
3 U- \ ?0 Z, O4 Z;fmul qword ptr [ebp+16] ;st(0)=power- F6 D+ Y! D l0 T
;fadd st,st(0), c# T( W3 K. W" n' \3 U2 ?
;fwait
# o6 K: i7 X/ e7 x. g+ y/ Q7 _4 P- Eaddesp,241 s' X, b: Z8 L T- n' e3 c$ L
;pop edx3 x S; s4 D3 M; F& r) {
;pop eax9 f$ f; h$ R& c, t/ t# Y
;pop esi
* J4 V! w, T2 y# u. S+ w;pop edi2 [4 ]; H- j* H
movesp,ebp
O8 @/ a7 T* q1 r/ ypopebp
) w3 }9 Z. |% p$ z9 K9 O; X. t3 u;leave ; @@@@@@ important don't use leave in vc++ 2010
) H* o! Z' r' v# rRET;return value = st(0)7 A, q* _' Y) S7 R$ u) L9 X
ppow10ENDP
. m6 c2 `3 }9 o! e: w# o$ _;_TEXTENDS
2 B' X1 B- H" V' X5 k/ zEND! k6 J. J3 Q% F0 ], j
;END DllEntry |