home *** CD-ROM | disk | FTP | other *** search
- Attribute VB_Name = "CH15CODE1"
- Option Explicit
- ' Copyright ⌐ 1997 by Desaware Inc. All Rights Reserved
-
-
- Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
- Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
- Declare Function GlobalHandle Lib "kernel32" (wMem As Any) As Long
- Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
- Declare Function GlobalReAlloc Lib "kernel32" (ByVal hMem As Long, ByVal dwBytes As Long, ByVal wFlags As Long) As Long
-
- Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
- Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
- Declare Function GlobalFlags Lib "kernel32" (ByVal hMem As Long) As Long
-
- ' Global Memory Flags
- Public Const GMEM_FIXED = &H0
- Public Const GMEM_MOVEABLE = &H2
- Public Const GMEM_NOCOMPACT = &H10
- Public Const GMEM_NODISCARD = &H20
- Public Const GMEM_ZEROINIT = &H40
- Public Const GMEM_MODIFY = &H80
- Public Const GMEM_DISCARDABLE = &H100
- Public Const GMEM_NOT_BANKED = &H1000
- Public Const GMEM_SHARE = &H2000
- Public Const GMEM_DDESHARE = &H2000
- Public Const GMEM_NOTIFY = &H4000
- Public Const GMEM_LOWER = GMEM_NOT_BANKED
- Public Const GMEM_VALID_FLAGS = &H7F72
- Public Const GMEM_INVALID_HANDLE = &H8000
-
- Dim Glblhnd& ' Share this variable among functions
- Dim di&
-
- '
- ' Typical code to access memory in a buffer
- ' In this case, the buffer is used to hold 1000 x 256 byte
- ' fixed length strings.
- '
- Sub AllocArray()
- Dim GlblAddr&, GlblAddr2&
- Dim tstring As String * 256
-
- Glblhnd& = GlobalAlloc(GMEM_ZEROINIT Or GMEM_MOVEABLE, CLng(1000 * 256))
-
- If Glblhnd& = 0 Then
- ' Perform appropriate error handling here. Do not
- ' continue to the next line!
- End If
-
- GlblAddr& = GlobalLock(Glblhnd&)
-
- ' Here's how you retrieve one of the 256 byte strings
- ' from the huge memory block -
- ' In this case, the 500th entry
-
- GlblAddr2& = GlblAddr& + 500 * 256
-
- ' Now extract the string
- Call agCopyData(ByVal GlblAddr2&, ByVal tstring, 256)
-
- di& = GlobalUnlock(Glblhnd&)
-
- 'The memory block is still available.
-
-
- End Sub
-
-