多进程中如何共享同一个位图资源( Dll程序 )

这篇博客介绍了如何在多进程中通过DLL(动态链接库)实现同一个位图资源的共享。首先定义了位图ID和位图结构体,然后在DLL内部使用内存映射文件来存储和管理位图资源。DLL在初始化时加载图片资源,通过内存映射文件结构体将资源映射到共享内存中,从而允许不同进程访问。提供了`GetBitmapResourceFile`函数供外部进程获取指定位图资源的句柄。
摘要由CSDN通过智能技术生成

/************************************************************************/

/* resDef.h      
/* 资源DLL提供给外部使用的头文件
/* nick
/* 4-10-2009

/************************************************************************/

#pragma once

//位图ID定义
#define IDB_BITMAP1             0
#define IDB_BITMAP2             1
#define IDB_BITMAP3             2
#define IDB_BITMAP4             3
#define IDB_BITMAP5             4
#define IDB_BITMAP6             5
#define IDB_BITMAP7             6

#define MAX_BITMAP_WIDTH 1000
#define MAX_BITMAP_HEIGHT 900
#define PIX_BIT 16

//实际位图的大小不应该大小MAX_BMP_SIZE,否则显示将不正常
#define MAX_BMP_SIZE  MAX_BITMAP_WIDTH*MAX_BITMAP_HEIGHT*(PIX_BIT>>3)

//位图结构体定义
typedef struct{
 LONG bmWidth;
 LONG bmHeight;
 WORD bmBitsPixel;
 DWORD bmSize;
 BYTE bits[MAX_BMP_SIZE];
}rgbBITMAP;


==========================================================End

 

 
//DllDef.h 头文件,DLL内部使用
#pragma once

#include "resDef.h"

#define DEBUG_DLL 1
#define MAX_BITMAPS 7
#define ALL_MEM_ALLOCATED

//内存映射的文件名
#define  lpResourceFileMapName          L"ResourceShared"

//图片的长宽
#define DEFAULT_WIDTH 800
#define DEFAULT_HEIGHT 480

//图片与应用程序启动路径的相对位置
#define BITMAP1_PATH L"images//BITMAP1.rgb"
#define BITMAP2_PATH L"images//BITMAP2.rgb"
#define BITMAP3_PATH L"images//BITMAP3.rgb"
#define BITMAP4_PATH L"images//BITMAP4.rgb"
#define BITMAP5_PATH L"images//BITMAP5.rgb"
#define BITMAP6_PATH L"images//BITMAP6.rgb"
#define BITMAP7_PATH L"images//BITMAP7.rgb"

//图片的长宽
#define BITMAP1_WIDTH              DEFAULT_WIDTH
#define BITMAP1_HEIGHT             DEFAULT_HEIGHT
#define BITMAP2_WIDTH              808
#define BITMAP2_HEIGHT             461
#define BITMAP3_WIDTH              722
#define BITMAP3_HEIGHT             505
#define BITMAP4_WIDTH              DEFAULT_WIDTH
#define BITMAP4_HEIGHT             DEFAULT_HEIGHT
#define BITMAP5_WIDTH              DEFAULT_WIDTH
#define BITMAP5_HEIGHT             DEFAULT_HEIGHT
#define BITMAP6_WIDTH              1290
#define BITMAP6_HEIGHT             535
#define BITMAP7_WIDTH              1290
#define BITMAP7_HEIGHT              535

//图片的信息,包括长宽和路径
typedef struct{
 LONG width;
 LONG height;
 LPTSTR path;
 HANDLE handle;
} FILE_INFO;

//内存映射文件结构体定义
typedef struct{
 rgbBITMAP hResBitmap[MAX_BITMAPS];
 } RESOURCE_BITMAP, *PRESOURCE_BITMAP;

 
=============================================&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值