VC中内存使用高手请进!!! 客户机从服务器机上接收过来BMP文件,然后显示出来要求接收模块和显示模块通过内存通信来实现,请问具体应该怎么做?如何对内存操作? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可用StretchDIBits显示图像:LPBITMAPINFOHEADER lpImgData;CopyMemory(lpImgData,char* s,size z);int bSuccess = ::StretchDIBits(pDC->m_hDC, // hDC lpDCRect->left, // DestX lpDCRect->top, // DestY lpDCRect->right-lpDCRect->left, // nDestWidth lpDCRect->bottom-lpDCRect->top, // nDestHeight lpDIBRect->left, // SrcX lpDIBRect->top, // SrcY lpDIBRect->right-lpDIBRect->left, // wSrcWidth lpDIBRect->bottom-lpDIBRect->top, // wSrcHeight lpImgData, // lpBits (LPBITMAPINFO)lpImgData, // lpBitsInfo DIB_RGB_COLORS, // wUsage SRCCOPY); // dwROP}//LPBITMAPINFOHEADER lpImgData;lpImgData是图像数据的指针,数据操作:CopyMemory(lpImgData,char* s,size z);//s: 数据源,z:数据长度 我的理解:你要解决的是如何通信,而不是接收和显示细节,进程间通信可以通过管道,或者邮件槽,邮件槽没用过.具体你可以参考<<win2k网络编程>>; 用内存映射文件,这里有一个例子:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/storage_64jd.asp 这个问题我想你是把通信和显示两个功能都混在一起考虑了,所以显得不知如何下手,其实,你可以建立一个用于专门用于通讯的对象,该对象仅用于通讯,当它收到对方机器发来的BMP数据,当一个BMP文件数据全部收到后,该对象便可以分配一个内存块,所BMP文件数据填入其中,再发消息通知显示窗口,这样,不是可以实现吗? StretchDIBits显示图像这个可以解决你的问题lpData就是内存数据你试试看 使用CreateMemfileCreateFileMap............??具体请参考内存文件可以共享的。 A程序访问B程序内存空间可以使用以下方法:首先B程序通过发消息的方式将进程ID dwProcessID和一个数据指针发给A,A中根据dwProcessID得到B进程HANDLE后用ReadProcessMemory可以访问B程序的内存空间了 you can creat two processes and two processes access the same memory area,but you must set a lock for that area ,that lock is prevent the memory rewrite befor you load it.that lock like the system's PV operation. 在vc6中建立了一个concle程序,可是编译不过去,大家看看 使用DirectDraw双缓冲绘图全屏最前端显示的问题 虚心请教 怎么样是Windows xp在启动是运行自己的程序? DWORD输出问题tcp的 视频截取保存 VC6.0+MapX,如何实现点击某轨迹点时跳出一个对应的属性框? 求助SEND发送数据的问题 菜鸟,怎样使CListView style view显示为report形式? 第二次提问!难道竟没有哪位老大知道吗? socket bind时参数无效 & 读声卡数据问题 请问MFC中的源代码对我们意味着什么?
CopyMemory(lpImgData,char* s,size z);
int bSuccess = ::StretchDIBits(pDC->m_hDC, // hDC
lpDCRect->left, // DestX
lpDCRect->top, // DestY
lpDCRect->right-lpDCRect->left, // nDestWidth
lpDCRect->bottom-lpDCRect->top, // nDestHeight
lpDIBRect->left, // SrcX
lpDIBRect->top, // SrcY
lpDIBRect->right-lpDIBRect->left, // wSrcWidth
lpDIBRect->bottom-lpDIBRect->top, // wSrcHeight
lpImgData, // lpBits
(LPBITMAPINFO)lpImgData, // lpBitsInfo
DIB_RGB_COLORS, // wUsage
SRCCOPY); // dwROP
}
//LPBITMAPINFOHEADER lpImgData;lpImgData是图像数据的指针,数据操作:
CopyMemory(lpImgData,char* s,size z);//s: 数据源,z:数据长度
而不是接收和显示细节,进程间通信可以通过管道,
或者邮件槽,邮件槽没用过.具体你可以参考
<<win2k网络编程>>;
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/storage_64jd.asp
CreateFileMap
............
??具体请参考
内存文件可以共享的。
首先B程序通过发消息的方式将进程ID dwProcessID和一个数据指针发给A,
A中根据dwProcessID得到B进程HANDLE后用ReadProcessMemory可以访问B
程序的内存空间了