zoukankan      html  css  js  c++  java
  • VB6的函数指针传递

    Option Explicit
    
    Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    
    Public Type MySubParams
        ID As Long
        Name As String
    End Type
    
    Sub MySub1(p As MySubParams, a As Long, b As Long, c As Long)
        Debug.Print VarPtr(p)
        MsgBox "MySub1 " & p.ID & " " & p.Name
    End Sub
    
    Sub MySub2(p As MySubParams, a As Long, b As Long, c As Long)
        Debug.Print VarPtr(p)
        MsgBox "MySub2 " & p.ID & " " & p.Name
    End Sub
    
    Function CallSub(address As Long, params As Long)
        CallSub = CallWindowProc(address, params, 0&, 0&, 0&)
    End Function
    
    Sub Start()
        Dim a As Long
        Dim p As MySubParams
        p.ID = 1
        p.Name = "Test1"
        Debug.Print VarPtr(p)
        Debug.Print CallSub(AddressOf MySub1, VarPtr(p))
        p.ID = 2
        p.Name = "Test2"
        Debug.Print CallSub(AddressOf MySub2, VarPtr(p))
    End Sub
  • 相关阅读:
    静态内存不能跨函数使用
    多级指针
    数组大小的动态分配
    luoguP1629 邮递员送信
    luoguP1119 灾后重建
    luoguP1395 会议
    树的重心
    luoguP5536 【XR-3】核心城市
    树的直径
    luoguP5836 [USACO19DEC]Milk Visits S
  • 原文地址:https://www.cnblogs.com/nanfei/p/4193031.html
Copyright © 2011-2022 走看看