VB6 和 TwinBasic 1个文件共处的编译条件 - 第1页 - 码农库
 
首页 /编程语言和算法/VB6/VBA/ASP
 VB6 和 TwinBasic 1个文件共处的编译条件
今天 10:21

TwinBasic中需要 longlong,而 VB6中是long,是否可以在vb6中提前做好 #If Win64 Then

【常量】 #If VBA7 Then 

【何时为】VBA 7.0 以上(Office 2010+) 或 TwinBasic

【True 含义】支持 LongPtr 、 PtrSafe 这两个关键字

-----------------------------------------------------------------------

【常量】#If Win64 Then

【何时为】在 64 位 的 VBA / TB 环境中编译时

【True 含义】实际运行在 64 位进程中


TwinBasic中直接用 LongPtr ,因为 LongPtr 在 32 位下就是 Long ,在 64 位下就是 LongLong , 无需自己判断 Win64 :

Private Sub Command1_Click()
    #If VBA7 Then
        Dim lngA As LongPtr    ' TB/x86=Long, TB/x64=LongLong
    #Else
        Dim lngA As Long    ' VB6 走这里
    #End If

    lngA = 3
    Debug.Print lngA
End Sub

只有在 VB6 兼容时才需要 #If VBA7 Then + LongPtr 包一下

再举一个针对API的例子(注意 As LongPtr 和 As Long):

#If VBA7 Then
    Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" _
        Alias "ShellExecuteA" (ByVal hwnd As LongPtr, _
        ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As LongPtr
#Else
    Public Declare Function ShellExecute Lib "shell32.dll" _
        Alias "ShellExecuteA" (ByVal hwnd As Long, _
        ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As Long
#End If


 
全部回复(0)
首页 | 电脑版 |