窗体显示异常?
下面的这个函数会造成弹出的文件打开对话框显示不完全,请如果如何修正?
这个函数就是建立一个Long类型的文件内存映象,但好像有内存泄漏,请问如何正确写入一个Long类型的内存文件映象?
Option Explicit
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Private Declare Function CreateFileMapping Lib "kernel32" Alias "CreateFileMappingA" (ByVal hFile As Long, lpFileMappigAttributes As SECURITY_ATTRIBUTES, ByVal flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As Long, ByVal lpName As String) As Long
Private Declare Function OpenFileMapping Lib "kernel32" Alias "OpenFileMappingA" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As String) As Long
Private Declare Function MapViewOfFile Lib "kernel32" (ByVal hFileMappingObject As Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long) As Long
Private Declare Function UnmapViewOfFile Lib "kernel32" (lpBaseAddress As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
Private Const SECTION_MAP_READ = &H4
Private Const FILE_MAP_READ = SECTION_MAP_READ
Private Const SECTION_MAP_WRITE = &H2
Private Const FILE_MAP_WRITE = SECTION_MAP_WRITE
Private Const PAGE_READWRITE = &H4
Dim m_hMemShare As Long
Dim m_lpdata As Long
Public Function CreateRestCallerSharedMemory()
Dim hMemShare As Long
Dim mAttr As SECURITY_ATTRIBUTES
Dim data As Long
Dim lpData As Long
data = GetCurrentProcessId
hMemShare = CreateFileMapping(&HFFFFFFFF, mAttr, PAGE_READWRITE, 0, LenB(data), "RestCallerShare")
If hMemShare = 0 Then
Debug.Print "无法创建映像文件,创建映像数据失败!"
Exit Function
End If
m_hMemShare = hMemShare
lpData = MapViewOfFile(hMemShare, FILE_MAP_WRITE, 0, 0, LenB(data))
If lpData = 0 Then
Debug.Print "映像文件到当前进程失败!"
Exit Function
End If
m_lpdata = lpData
CopyMemory ByVal lpData, data, LenB(data)
End Function
Private Sub Form_Load()
CreateRestCallerSharedMemory
CommonDialog1.ShowOpen
End Sub
对话框
内存泄漏
vb
kernel
补充:VB , API