MFC学习 进程间通信
内存共享通信方式
server.cpp
#include <stdio.h>
#include <Windows.h>
int main()
{
HANDLE hFile;
hFile = CreateFile("tmpfile", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
printf("create file failed");
system("pause");
return ;
} DWORD dwWrite;
WriteFile(hFile, "test data", strlen("test data") + , &dwWrite, NULL); HANDLE hFileMapping;
hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, , , "mytestfilemapping");
if(hFileMapping == NULL)
{ CloseHandle(hFile); printf("Create file mapping failed!");
system("pause");
return ;
}
/* 可以在这里面修改pfile
char * pFile = (char*)MapViewOfFile(hFileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if(pFile == NULL)
{
CloseHandle(hFileMapping);
CloseHandle(hFile);
printf("map view of file failed!");
system("pause");
return 0;
}
*/
Sleep();
CloseHandle(hFile);
CloseHandle(hFileMapping); system("pause");
return ;
}
client.cpp
#include <stdio.h>
#include <Windows.h>
int main()
{
HANDLE hFile;
hFile = CreateFile("tmpfile", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_TEMPORARY, NULL);
if(hFile == INVALID_HANDLE_VALUE)
{
printf("create file failed");
system("pause");
return ;
} DWORD dwWrite;
WriteFile(hFile, "test data", strlen("test data") + , &dwWrite, NULL); HANDLE hFileMapping;
hFileMapping = CreateFileMapping(hFile, NULL, PAGE_READWRITE, , , "mytestfilemapping");
if(hFileMapping == NULL)
{ CloseHandle(hFile); printf("Create file mapping failed!");
system("pause");
return ;
}
/* 可以在这里面修改pfile
char * pFile = (char*)MapViewOfFile(hFileMapping, FILE_MAP_ALL_ACCESS, 0, 0, 0);
if(pFile == NULL)
{
CloseHandle(hFileMapping);
CloseHandle(hFile);
printf("map view of file failed!");
system("pause");
return 0;
}
*/
Sleep();
CloseHandle(hFile);
CloseHandle(hFileMapping); system("pause");
return ;
}
例子包括剪切板, 匿名管道(父子进程通信), 命名管道, 油槽(单向, 但可以一边同时建立服务与客户端), 内存共享
MFC学习 进程间通信的更多相关文章
- MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变
1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量: CToolBar m_toolbar;CImageList ...
- MFC学习笔记1---准备工作
什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程 ...
- MFC 学习笔记
MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...
- 孙鑫MFC学习笔记17:进程间通信
17 1.进程间通信4种方式 2.OpenClipboard打开剪贴板 3.EmptyClipboard清空剪贴板,并把所有权分配给打开剪贴板的窗口 4.SetClipboardData设置剪贴板数据 ...
- MFC学习笔记(一)
个人对MFC技术一直都很感兴趣,因为能够做出漂亮绚丽的界面应该是一件十分有成就感的事情. 学习的参考课本为北京博彦科技发展有限责任公司翻译的Jeff Prosise著的<MFC Windows程 ...
- MFC学习-第一课 MFC运行机制
最近由于兴趣爱好,学习了孙鑫的MFC教程的第一课.看完视频了,自己便用visual studio 2010尝试了MFC编程,其中遇到了一些问题. 1.vs2010不像vs6.0那样可以新建一个空的MF ...
- 初识MFC学习——Hello World
MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架, ...
- 我的MFC学习之路(一)
因为项目需求,我开始应用MFC写程序.具体接触MFC的时间大概也有两个月了.现在的水平算是刚刚踏入了MFC大门的半只脚.目前能基本使用MFC Class Wizard,可以根据实例仿照完成需求,小范围 ...
- MFC学习指南大纲
最近一直在做MFC的项目,顺便学习一下以下MFC核心知识吧: 大纲: 1. 消息队列 2. send message 3. post message 4. 面向对象编程 5. 指针 一个一个来学习哈.
随机推荐
- Hibernate3回顾-6-hibernate缓存(性能优化策略)
主要来源: http://blog.csdn.net/csh624366188/article/details/7612142 (比较详细) http://www.cnblogs.com/20091 ...
- LINQ To SQL 语法及实例大全
http://blog.csdn.net/pan_junbiao/article/details/7015633 http://blog.csdn.net/pan_junbiao/article/de ...
- MSCRM Plugin Debug
MS CRM 2011的自定义和开发(11)——插件(plugin)开发(四) 上面几篇文章介绍了Microsoft Dynamics CRM 2011中如何进行插件开发,本文将介绍插件的调试. 调试 ...
- Angular学习(2)- ng-app
此例子看alert弹出时的效果.当然,最重要的是ng-app="MyApp",这一个是怎么加载的. <!DOCTYPE html> <html ng-app=&q ...
- 如何制作带MFC界面的MFC DLL
最近在做基于组件化MFC界面的开发,需要把界面封装到动态库中. 一:工程创建步骤 1.创建MFC DLL工程,选择 “在共享 DLL 中使用 MFC”. 2.运行时库选择:c/c++-->代码生 ...
- 替换、恢复Html中的特殊字符
public static string HtmlEncode(string theString){theString = theString.Replace(">", &q ...
- SVN 主干(trunk)、分支(branch )、标记(tag)
主干(trunk).分支(branch ).标记(tag) 在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆. 在实现上,branch和tag,对于svn都是使用copy实现的, ...
- Mysql触发器简明使用
触发器:trigger创建触发器的语法mysql> delimiter $mysql> create trigger 触发器名称 after/before(触发时间) insert/upd ...
- PLSQL_基础系列07_插入方式Pivoting / Unconditional / Conditional ALL / Conditional FIRST INSERT(案例)
2014-12-08 Created By BaoXinjian
- Eclipse中构建Fluent风格到Formatter
The place to set this is on the "Line Wrapping" tab of the code formatting preferences pag ...