struct MyStruct
{
int a;
int b;
TCHAR name[
20];
};
void CNewSoulDlg::OnBnClickedButton1()
{
MyStruct Test;
Test.a =
1;
Test.b =
2;
_tcscpy(Test.name,
"三哥说:我不是猪");
HANDLE m_hMapObject = CreateFileMapping(
(HANDLE)
0xffffffff,
nullptr,
PAGE_READWRITE,
0,
0x1000,
TEXT(
"ShareData")
);
if (!m_hMapObject)
{
AfxMessageBox(TEXT(
"创建映射对象失败"));
}
MyStruct *m_pszMapView = (MyStruct*)MapViewOfFile(m_hMapObject, FILE_SHARE_WRITE,
0,
0,
0);
if (!m_pszMapView)
{
AfxMessageBox(TEXT(
"映射数据失败"));
}
memcpy(m_pszMapView,&Test, sizeof(Test));
}
void CNewSoulDlg::OnBnClickedButton2()
{
MyStruct *
str;
HANDLE m_hMapObject;
m_hMapObject = OpenFileMapping(
FILE_MAP_READ,
FALSE,
TEXT(
"ShareData")
);
if (!m_hMapObject)
{
AfxMessageBox(TEXT(
"打开映射失败"));
}
MyStruct *m_pszMapView = (MyStruct*)MapViewOfFile(m_hMapObject, FILE_SHARE_READ,
0,
0,
0);
str = m_pszMapView;
if (!m_pszMapView)
{
AfxMessageBox(TEXT(
"读取映射数据失败"));
}
CString sor;
sor.Format(
"%d %d %s",
str->a,
str->b,
str->name);
AfxMessageBox(sor);
UnmapViewOfFile(m_pszMapView);
CloseHandle(m_hMapObject);
}