您現(xiàn)在的位置:程序化交易>> 期貨公式>> 金字塔等>> 其他期貨軟件知識(shí)>>正文內(nèi)容

[求助]請(qǐng)問這兩個(gè)API的DynamicWrapper輸入?yún)?shù)數(shù)量和類型該怎么寫 [金字塔]

  • 咨詢內(nèi)容:  在VB是這么寫的:
    Private
    		Declare
    		Sub CopyMemory Lib
    		"ntdll"
    		Alias
    		"RtlMoveMemory" (Destination As
    		Any, Source As
    		Any, ByVal Length As
    		Long)
    
    Private
    		Declare
    		Function StrCSpn Lib
    		"shlwapi.dll"
    		Alias
    		"StrCSpnW" (ByVal lpStr&, ByVal lpCharacters&) As
    		Long

    謝謝!!

     

  • 金字塔客服: 建議看看金字塔編程幫助中對(duì)DynamicWrapper的參數(shù)描述吧,此外DynamicWrapper是公用的控件,你可以到GOOGLE上搜索一下看看有沒有能幫助到你的信息

     

  • 用戶回復(fù):  我看過幫助了
    主要是Any類型不知道怎么轉(zhuǎn)換
    查了一下,是變體

     

  • 網(wǎng)友回復(fù):

    到網(wǎng)上一艘一大把

     

    給你找了一篇 VBS調(diào)用Win32API示例:對(duì)話框

    里面有相關(guān)累死的代碼調(diào)用

     

    Option Explicit
    '************************************
    '* Sample GUI only with API calls    *
    '* Need DynaWrap component          *
    '* Use Struct v1.1 Class               *
    '* syntax Win NT et >                *
    '* omen999 february 2007                *
    '************************************

    Class Struct ' v1.1  allow typedef with dynawrap calls
       Public Property Get Ptr '******************************* Property Ptr
           Ptr=GetBSTRPtr(sBuf)
       End Property
       Public Sub Add(sItem,sType,Data) '********************** Method Add
           Dim lVSize,iA,iB,iD
           iA=InStr(1,sType,"[",1)
           iB=InStr(1,sType,"]",1)
           iD="0"
           If iA>0    And iB>0 Then
               iD=Mid(sType,iA+1,iB-iA-1)
               If isNumeric(iD) Then
                   sType=Left(sType,iA-1)
               Else
                   Err.raise 10000,"Method Add","The index " & iD & " must be numeric"
                   Exit Sub
               End If
           End If
           Select Case UCase(sType)'************************************************* COMPLETE WITH OTHERS WIN32 TYPES
           'OS 32bits...
           Case "DWORD","LONG","WPARAM","LPARAM","POINTX","POINTY","ULONG","HANDLE","HWND","HINSTANCE","HDC","WNDPROC","HICON","HCURSOR","HBRUSH"
               lVSize=4
           Case "LPBYTE","LPCTSTR","LPSTR","LPPRINTHOOKPROC","LPSETUPHOOKPROC","LPVOID","INT","UINT"
               lVSize=4
           Case "WORD"
               lVSize=2
           Case "BYTE"
               lVSize=1
           Case "TCHAR"
               If CLng(iD)<1 Then lVSize="254" Else lVSize=iD
           Case Else
               Err.raise 10000,"Method Add","The type " & sType & " is not a Win32 type."
               Exit Sub
           End Select
           dBuf.Add sItem,lVSize
           sBuf=sBuf & String(lVSize/2+1,Chr(0))
           SetDataBSTR GetBSTRPtr(sBuf),lVSize,Data,iOffset
       End Sub
       Public Function GetItem(sItem) '********************************************** Méthode GetItem
           Dim lOf,lSi,aItems,aKeys,i
           If dBuf.Exists(sItem) then
               lSi=CLng(dBuf.Item(sItem))
               aKeys=dBuf.Keys
               aItems=dBuf.Items
               lOf=0
               For i=0    To dBuf.Count-1
                   If aKeys(i)=sItem Then Exit For
                   lOf=lOf+aItems(i)
               Next
               GetItem=GetDataBSTR(Ptr,lSi,lOf)
           Else
               GetItem=""
               err.raise 10000,"Method GetItem","The item " & sItem & " don't exist"
           End If
       End Function
       Public Function GetBSTRPtr(ByRef sData)
       'retun the TRUE address (variant long) of the sData string BSTR
           Dim pSource
           Dim pDest
           If VarType(sData)<>vbString Then 'little check
               GetBSTRPtr=0
               err.raise 10000, "GetBSTRPtr", "The variable is not a string"
               Exit Function
           End If
           pSource=oSCat.lstrcat(sData,"")        'trick to return sData pointer
           pDest=oSCat.lstrcat(GetBSTRPtr,"")    'idem
           GetBSTRPtr=CLng(0)                        'cast    function variable
           'l'adresse du contenu réel de sBuf (4octets) écrase le contenu de la variable GetBSTPtr   
           'les valeurs sont incrémentées de 8 octets pour    tenir compte du Type Descriptor
           oMM.RtlMovememory pDest+8,pSource+8,4
       End Function
    '**************************************************************************** IMPLEMENTATION
       Private oMM,oSCat,oAnWi 'objets wrapper API
       Private dBuf,sBuf,iOffset
       Private    Sub Class_Initialize 'Constructeur
           Set oMM=CreateObject("DynamicWrapper")
           oMM.Register "kernel32.dll","RtlMoveMemory","f=s","i=lll","r=l"
           Set oSCat=CreateObject("DynamicWrapper")
           oSCat.Register "kernel32.dll","lstrcat","f=s","i=ws","r=l"        
           Set oAnWi=CreateObject("DynamicWrapper")                        
             oAnWi.Register "kernel32.dll","MultiByteToWideChar","f=s","i=llllll","r=l"
           Set dBuf=CreateObject("Scripting.Dictionary")
           sBuf=""
           iOffset=0
       End Sub   
       Private Sub SetDataBSTR(lpData,iSize,Data,ByRef iOfs)
       'Place une valeur Data de taille iSize à l'adresse lpData+iOfs
           Dim lW,hW,xBuf
           Select Case iSize     'on commence par formater les valeurs numériques
           Case 1
               lW=Data mod 256     'formatage 8 bits
               xBuf=ChrB(lW)
           Case 2                     'if any
               lW=Data mod 65536 'formatage 16 bits
               xBuf=ChrW(lW)        'formatage little-endian
           Case 4
               hW=Fix(Data/65536)'high word
               lW=Data mod 65536 'low word
               xBuf=ChrW(lW) & ChrW(hW) 'formatage little-endian
           Case Else                'bytes array, size iSize
               xBuf=Data
           End Select
           oMM.RtlMovememory lpData+iOfs,GetBSTRPtr(xBuf),iSize
           iOfs=iOfs+iSize 'maj l'offset
       End Sub
       Private Function GetDataBSTR(lpData,iSize,iOffset)
       'Read an iSize data to lpData+iOffset address
           Const CP_ACP=0             'code ANSI   
           Dim pDest,tdOffset
           'valeurs pour les données numériques
           pDest=oSCat.lstrcat(GetDataBSTR,"")
           tdOffset=8
           Select Case iSize ' cast de la variable fonction
           Case 1
               GetDataBSTR=CByte(0)
           Case 2
               GetDataBSTR=CInt(0)
           Case 4
               GetDataBSTR=CLng(0)
           Case Else    'a little bit more complicated with string data...
                 GetDataBSTR=String(iSize/2,Chr(0))
                 'la chaine variant BSTR stocke ses données ailleurs
               pDest=GetBSTRPtr(GetDataBSTR)
               tdOffset=0
           End Select
           'le contenu de la structure à l'offset iOffset écrase le contenu de la variable GetDataBSTR (tenir compte du TD)
           oMM.RtlMovememory pDest+tdOffset,lpData+iOffset,iSize
           if tdOffset=0 Then
               oAnWi.MultiByteToWideChar CP_ACP,0,lpData+iOffset,-1,pDest,iSize 'don't forget conversion Ansi->Wide
               GetDataBSTR=Replace(GetDataBSTR,Chr(0),"")                               'clean the trailer
           End If
       End Function
    End Class

     

  • 網(wǎng)友回復(fù):

    Class XGui 'v1.0
    ' this class create a dialogbox only by api calls
    ' it uses automation component DynaWrap and the struct class upper to allow typedef with dynawrap calls
    ' 4 public methods: CreateForm, ShowForm, RunForm et AddControl
    ' 1 public object dictionnary dFrmData which keys are name controls and stores data controls
    ' edit, static et button controls return content, listbox/combobox the selected item if exists, or empty string
    ' radiobutton and checkbox return true if checked or false
    ' groupbox control always return false
    ' each control must have unique name
    ' if the last letter of a checkbox ou radiobutton control name is "k", the control wil be checked
    ' close form without dictionnary data with esc key, Alt+F4, close button and system menu
    ' button controls haven't default behavior et must be manage by RunForm method
    ' this release 1.0  manages only "&ok" et "&cancel" buttons
    ' button ok closes the form and set data dictionnary, button cancel acts like esc key


    Public dFrmData ' object dictionnary
    Public Sub CreateForm(sCaption,lLeft,lTop,lWidth,lHeight,bOnTaskBar)
    'Create a modeless invisible form
    'sCaption: form caption
    'lLeft,lTop: coordinates form
    'lWidth, lHeight: form dimensions
    'bOnTaskBar: if true (-1) form is display on taskbar
    'no return value

       Const WS_VISIBLE=&H10000000
       Const WS_POPUP=&H80000000
       Const WS_OVERLAPPEDWINDOW=&HCF0000
       Dim hTask,fChild
       If bOnTaskBar Then
           hTask=0
           fChild=0
       Else
           hTask=hWsh
           fChild=WS_CHILD
       End If
       hWF=oWGui.CreateWindowExA(0,"#32770",sCaption&"",WS_OVERLAPPEDWINDOW+WS_POPUP+fChild,lLeft,lTop,lWidth,lHeight,hTask,0,hIns,0)
    End Sub
    Public Sub ShowForm(bAlwaysOnTop)
    'display the form created by CreateForm
    'bAlwaysOnTop: if true (-1) form always on top
    'no return value

       Const HWND_TOP=0
       Const HWND_TOPMOST=-1
       Const SWP_SHOWWINDOW=&H40
       Const SWP_NOMOVE=&H2
       Const SWP_NOSIZE=&H1
       Dim fTop
       
       If bAlwaysOnTop Then fTop=HWND_TOPMOST Else fTop=HWND_TOP
       oWGui.SetWindowPos hWF,fTop,0,0,0,0,SWP_SHOWWINDOW+SWP_NOMOVE+SWP_NOSIZE
    End Sub
    Public Sub RunForm()
    'form messages pump and dictionnary gestion
    'no return value

       Const WM_COMMAND=&H111
       Const WM_SYSCOMMAND=&H112
       Const WM_KEYUP=&H101
       Const WM_LBUTTONUP=&H202
       Const GCW_ATOM=-32
       Const LB_GETCURSEL=&H188
       Const LB_ERR=-1
       Const LB_GETTEXT=&H189
       Const LB_GETTEXTLEN=&H18A
       Const GWL_STYLE=-16
       Const WS_CHILD=&H40000000
       Const WS_VISIBLE=&H10000000
       Const WS_TABSTOP=&H10000
       Const BS_AUTOCHECKBOX=&H3
       Const BS_AUTORADIOBUTTON=&H9
       Const BM_GETCHECK=&HF0
       Const BST_UNCHECKED=&H0
       Const BST_CHECKED=&H1
       Const BST_INDETERMINATE=&H2
       Const BST_PUSHED=&H4
       Const BST_FOCUS=&H8
       Const CP_ACP=0
       Const GWL_ID=-12
       Dim sCN,sCNW         'control content ansi/wide
       Dim aKData,aHData 'dictionnary contents keys/datas
       Dim lGetI             'index selected item (listbox)
       Dim lStyle             'button style
       Dim lKCode            'param message
       Dim n                'compteur

 

如果以上指標(biāo)公式不適用于您常用的行情軟件

或者您想改編成選股公式,以便快速選出某種形態(tài)個(gè)股的話,

可以聯(lián)系我們相關(guān)技術(shù)人員 QQ: 262069696  點(diǎn)擊在線交流進(jìn)行 有償 改編!

 


【字體: 】【打印文章】【查看評(píng)論

相關(guān)文章

    沒有相關(guān)內(nèi)容
主站蜘蛛池模板: 高清性色生活片97| 国产热re99久久6国产精品| 国产浮力影院第一页| 四虎成人精品在永久免费| 亚洲精品一级片| 久久久亚洲精品国产| 91呻吟丰满娇喘国产区| 菠萝蜜视频在线观看| 欧美综合人人做人人爱| 无码专区一va亚洲v专区在线| 国产精品美女久久久久AV福利| 国产一级一级毛片| 亚洲成在人线在线播放无码| 中文字幕无码视频专区| 日批视频在线看| 精品免费视频一卡2卡三卡4卡不卡| 柳岩aa一一级毛片| 在线观看视频免费123| 四影虎影ww4hu32海外网页版| 亚洲午夜久久久久妓女影院| 一区二区三区中文字幕| 麻豆国产福利91在线| 欧美日韩国产成人综合在线| 嫩b人妻精品一区二区三区| 国产伦子沙发午休| 亚洲va在线va天堂成人| 99久久99久久精品国产片| 美女扒开内裤羞羞网站| 日韩av片无码一区二区三区不卡| 国产精品第一区第27页| 人人妻人人添人人爽日韩欧美| 中文在线免费视频| 青青操在线免费观看| 桃子视频在线观看高清免费视频| 国模无码一区二区三区不卡| 免费黄色在线网站| 久久久久AV综合网成人| 99re在线精品视频免费| 狠狠色成人综合首页| 欧美激情一区二区| 国语对白avxxxooo|