VC++之线程和进程之用共享内存实现进程间通信

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、创建对话框应用程序

二、编辑对话框资源

控件ID及标题

IDC_STATIC 发送数据IDC_EDIT_SEND

IDC_BUTTON_SEND 发送

IDC_STATIC 接收数据IDC_EDIT_RECEIVE

IDC_BUTTON_RECEIVE 接收

IDOK 退出

三、添加变量、函数、对象/库模块

1、添加变量

public:

CEdit m_send;

CEdit m_receive;

public:

HANDLE SharedMemory;

void* address;

2、添加消息响应函数

四、添加代码

1、添加初始化代码

BOOL CThreadDlg::OnInitDialog()

{

CDialog::OnInitDialog();

......

SharedMemory =

CreateFileMapping((HANDLE)0xffffffff,NULL,PAGE_READWRITE,0,10000,"Mem File");

address = MapViewOfFile(SharedMemory,FILE_MAP_WRITE,0,0,0);

return TRUE;

}

2、添加函数代码

void CThreadDlg::OnButtonReceive()

{

// TODO: Add your control notification handler code here

CString str;

strcpy((char*)(LPCTSTR)str,(char*)address);

m_receive.SetWindowText(str);

}

void CThreadDlg::OnButtonSend()

{

// TODO: Add your control notification handler code here

CString str;

m_send.GetWindowText(str);

strcpy((char*)address,(char*)(LPCTSTR)str);

}

五、编译

六、运行

七、函数说明

1、CreateFileMapping()函数声明

HANDLE CreateFileMapping(HANDLE hFile,LPSECURITY_ATTRIBUTE lpFileMappingAttributes,DWORD flProtect,DWORD dwMaximumSizeHigh,DWORD dwMaximumSizeLow,LPCTSTR lpName)

功能:创建一个内存映射对象。成功,返回文件映射对象句柄;失败,返回NULL。

2、MapViewOfFile()函数声明

HANDLE MapViewOfFile(HANDLE hFileMappingObject,DWORD dwDesiredAccess,DWORD dwFileOffsetHigh,DWORD dwFileOffsetLow,SIZE_T dwNumberOfByteToMap)

功能:将内存映射对象映射到进程地址控件。成功,返回映射对象的起始地址;失败,返回NULL。

3、strcpy()函数声明

char* strcpy(char* strDestination,const char* strSource)

功能:将源字符串内容复制到目的字符串。

相关文档
最新文档