这个应该是不能进程共享的吧,再说如果能共享这个也太危险了吧。
你可以通过进程之间的通信来间接控制hdc盒hbmp啊
你可以通过进程之间的通信来间接控制hdc盒hbmp啊
解决方案 »
- Directshow如何在单文档的某个区域显示视频?
- 对try,catch,throw的迷惑。
- 使用CreateDesktop最多能创建多少个虚拟桌面
- 两个怪怪错误提示,编译错误
- 服务器用C#与客户端用VC收发数据的小问题
- 各位勿必看一看
- 关于打印机的问题
- VC中修改数据源
- VC6.0 升级到VC2010 ShellCreateItemFromParsingName返回值错误是怎么回事啊
- new~~~~????
- Windows\v6.1\Samples\NetDs\DNS中示例ModifyRecords为什么运行不了
- 用bkwin框架 DLG标签建立的一个容器怎么动态的移动这个dlg建立的界面
你可以使用CreateBitmap, 指定内存区域,
这个内存可以使用全系统共用的, 比如DLL共享, FileMap等方法
参考:
"多线程GDI程序"
http://download.csdn.net/detail/schlafenhamster/5583697
"这是微软的VC6 安装盘中的一个例子,这个例子说明如何在多线程中使用 GDI 绘制。程序可以开 1,10, 25个线程来绘制 圆,矩形,和直线。"
注意 要 互鎻 (临界区)
CreateBitmap这个函数的最后一个参数,是指向一个内在的指针,书上说:CreateBitmap用这块内存的内容来初始化Bitmap,按我的理解是:Bitmap内部数据并不是保存在这块内存的,只不过用这块内存来初始化Bitmap内部数据的。如果是这样,那改变了这块内存,并不能改变Bitmap的内容,另外,Bitmap的真正数据并不是保存这块共享内存中的,所以每个进程的hBitmap还得占用内存。你的意思是不是说:这块内存,就是Bitmap的内部数据?如果是,就太好了,将这块内存设为所以进程的共享内存(所有进程只要一份就够了),然后每个进程的hBitmap虽然不同,但是其内容(内部图片数据)实际上都保存在这块共享内存中,那就实现了我需要的了。请你:CreateBitmap的时候,那个参数指向的内存块,就是Bitmap的内部数据吗?
很好,马上试验一下!
注意 要 互鎻 (临界区)
#pragma data_seg ("Shared")
HDC hDC=0;// has to been initialized
#pragma data_seg ()
// tell link
#pragma comment (linker," -section:Shared,rws")
#pragma data_seg ("Shared")
HDC hDC=0;// has to been initialized
#pragma data_seg ()hDC 总是 可以 存取的。
hbmp = CreateCompatibleBitmap(hdc, cx, cy);
SelectObject(hdc, hbmp);而且hdc和hbmp是用你上面说的共享内存段,但是,好象只是这两个句柄值是共享内存段的,真正的hbmp的数据好象不是。这样的话,别的进程能用这个dll里的hdct,用Graphics gramem(hdc)来建立Graphics吗?