// global memory buffer
BYTE* gpMem = NULL;
// Save a drawing into memory buffer
//-----------------------------------------------
BOOL SaveToMem (HANDLE hLcDrw)
{
int MemSize;
if (gpMem != NULL){
// the buffer is not empty, clear it
delete[] gpMem;
gpMem = NULL;
}
// get size required for memory buffer
MemSize = lcDrwSaveMem( hLcDrw, 0, 0 );
if (MemSize > 0){
// allocate memory buffer
gpMem = new BYTE[MemSize];
// write a drawing database into the memory buffer
lcDrwSaveMem( hLcDrw, (HANDLE)gpMem, MemSize );
return TRUE;
}
return FALSE;
}
// Load a drawing from memory buffer
// If you don't need to display the loaded drawing, then specify 0 for hLcWnd
//-----------------------------------------------
BOOL LoadFromMem (HANDLE hLcDrw, HANDLE hLcWnd, BOOL bClearMem)
{
BOOL bRet = FALSE;
if (gpMem != NULL){
bRet = lcDrwLoadMem( hLcDrw, (HANDLE)gpMem, hLcWnd );
// clear memory buffer (if don't needed any more)
if (bClearMem == TRUE){
delete[] gpMem;
gpMem = NULL;
}
}
return bRet;
}
Imports System
Imports System.Runtime.InteropServices
Public Class Form1
...
Dim hLcWnd As Integer, hLcDrw As Integer
Dim MemBuf As IntPtr ' pointer to a memory buffer
...
-----------------------------------------------
Private Sub SaveToMemoryToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveToMemoryToolStripMenuItem.Click
Dim MemSize As Integer, bRet As Boolean
' get required size for memory buffer
MemSize = Lcad.DrwSaveMem(hLcDrw, 0, 0)
If MemSize > 0 Then
' alloc memory buffer
MemBuf = Marshal.AllocHGlobal(MemSize)
' write drawing into the buffer
bRet = Lcad.DrwSaveMem(hLcDrw, MemBuf, MemSize)
End If
End Sub
-----------------------------------------------
Private Sub LoadFromMemoryToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoadFromMemoryToolStripMenuItem.Click
Dim bRet As Boolean
If MemBuf <> 0 Then
bRet = Lcad.DrwLoadMem(hLcDrw, MemBuf, hLcWnd)
' free memory buffer
Marshal.FreeHGlobal(MemBuf)
MemBuf = 0
End If
End Sub
End Class