我试着做两个进程通讯的程序,但是MapViewOfFile返回的LPVOID指针lpview,用memcpy((BYTE*)lpview+4,datafilepath,lstrlen(datafilepath+1));写入数据时,vc6.0老是在lpview+4处报error C2666: '+' : 4 overloads have similar conversions
Error executing cl.exe.
此外,将lpview改为tchar型后,不用memcpy函数,改用字符串后,OpenFileMapping打开映象文件时总是打不开,返回空值。
这是怎么一回事,请高手指点迷津。
Error executing cl.exe.
此外,将lpview改为tchar型后,不用memcpy函数,改用字符串后,OpenFileMapping打开映象文件时总是打不开,返回空值。
这是怎么一回事,请高手指点迷津。
解决方案 »
- 既然STARTUPINFO里面可以指定句柄可以继承,那么什么时候需要用到DuplicateHandle?
- 从托盘图标的右键菜单退出程序时的问题?
- 怎样打印第三方控件内容
- OpenGL连接错误~~!怎么解决啊???
- 急急急。。。。。LIST控件的问题————在线等待
- 怎么将MemDC中的图片放大或缩小到桌面上?
- 如何判断线程都关闭?(附:处理过程及部分代码)
- 在COM接口中添加接口函数,myproject.idl文件中定义如下. 编译连接时出现语法错误," myproject.idl(24) : error MIDL2025 : syntax error
- 急呀!在线等!VC CDatabase中读取Sql中ntext字符串问题
- vc中生成的pdb,map文件有什么用途?
- 有关GDI对象的删除。。。。。
- 写这个程序有意义么?请喜欢SDK的朋友讨论
(((BYTE*)lpview)+4,datafilepath,lstrlen(datafilepath)+sizeof(TCHAR));
你的文件映射还没有创建吧……
switch (wmId)
{
case ID_CREATE:
hFileMap=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,4*1024,TEXT("MY_SHARE"));
if(hFileMap!=NULL)
{
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
MessageBox(hWnd,TEXT("Mapping already exists - not created."),TEXT("MAP"),NULL);
CloseHandle(hFileMap);
}
else
{
lpView=MapViewOfFile(hFileMap,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);
if(lpView!=NULL)
{
strcpy((char*)lpView,TEXT("TEST001"));
UnmapViewOfFile((LPVOID)lpView);
}
else
{
MessageBox(hWnd,TEXT("Can not map view of file"),TEXT("MAP"),NULL);
}
}
}
else
{
MessageBox(hWnd,TEXT("Can not create file map"),TEXT("MAP"),NULL);
}
break;
case ID_OPEN:
hFileMapOpen=OpenFileMapping(FILE_MAP_READ|FILE_MAP_WRITE,FALSE,TEXT("MY_SHARE"));
if(hFileMapOpen!=NULL)
{
lpView=NULL;
lpView=MapViewOfFile(hFileMapOpen,FILE_MAP_READ|FILE_MAP_WRITE,0,0,0);
if(lpView!=NULL)
{
MessageBox(hWnd,(LPCTSTR)lpView,TEXT("READ MAP"),NULL);
}
else
{
MessageBox(hWnd,TEXT("CAN not open map view"),TEXT("READ MAP"),NULL);
}
CloseHandle(hFileMapOpen);
}
else
{
MessageBox(hWnd,TEXT("CAN NOT OPEN MAP"),TEXT("READ MAP"),NULL);
}
break;
jiangsheng(蒋晟.Net) 25分,: hzfxjun(飞天)25分