MAKEINTRESOURCE() 与 CString 的转换问题,谢谢回答

happyhhb 2007-05-01 06:45:18
首先祝各位兄弟51快乐,呵呵

一个在picture上显示位图的程序中,我用了如下代码:

HBITMAP hBitmap;
CStatic *pStatic = (CStatic *)GetDlgItem(IDC_Picture_Unit);
hBitmap = (HBITMAP)LoadImage(
AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDB_BITMAP_DXJSDQ), //数字形ID转为"字符串"
IMAGE_BITMAP,
0,
0,
LR_DEFAULTSIZE);
pStatic->ModifyStyle(0xF, SS_BITMAP|SS_CENTERIMAGE);
pStatic->SetBitmap(hBitmap);

当我在MAKEINTRESOURCE()中使用固定的位图资源id的时候,显示是正常的
但当我把这一id换成CString变量的时候,编译一样通过,但就是不能显示位图
我想根据程序的运行情况来决定显示哪个位图资源
我用过的方法:
CString mPicture = "IDB_BITMAP_DXJSDQ";
MAKEINTRESOURCE(((LPCTSTR)mPicture)) 结果是编译通过但无法显示

如果我要换成显示的位图是一个外部文件呢?我用的方法是:
(HBITMAP)LoadImage( NULL,
"c:\\2.bmp",
IMAGE_BITMAP,
0,
0, LR_DEFAULTSIZE);
pStatic->ModifyStyle(0xF, SS_BITMAP);
pStatic->SetBitmap(hBitmap);

结果也是编译通过但无法显示
我该怎么办呢?谢谢回答
...全文
632 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyhhb 2007-05-01
  • 打赏
  • 举报
回复
谢谢,songyuanwc()

但我现在就是这样做的,呵呵,够懒得了,哈哈
songyuanwc 2007-05-01
  • 打赏
  • 举报
回复
呵呵,比较阴险的一招是做个和背景色一样的图标,到时候。。。
happyhhb 2007-05-01
  • 打赏
  • 举报
回复
还有一个问题是,如何隐藏显示呢,当满足一定条件的时候,就是不显示位图了,换成背景色

谢谢
happyhhb 2007-05-01
  • 打赏
  • 举报
回复
Mackz(在相互),你答过我n个帖子了耶,呵呵,谢谢

不知道应该如何把字符串转化成整数id呢,用GetDlgItem()吗
命名id倒是挺新鲜的,我试试看
菜牛 2007-05-01
  • 打赏
  • 举报
回复
先转换为ID,也就是整数。或者,你的资源就用“命名”ID,也就是用引号括起来,而不是整数ID。
happyhhb 2007-05-01
  • 打赏
  • 举报
回复
谢谢songyuanwc() ^_^

那我该怎么让它“变量化”呢?
我想从一个txt文件中读取图片资源的id,作为显示位图的变量
当然读进来的时候就是一个CString类型了,但该类型是不能直接作第二个参数的
what can i du ?
songyuanwc 2007-05-01
  • 打赏
  • 举报
回复
HANDLE LoadImage(
HINSTANCE hinst, // handle to instance
LPCTSTR lpszName, // image to load
UINT uType, // image type
int cxDesired, // desired width
int cyDesired, // desired height
UINT fuLoad // load options
);
第二个参数如果是ID的话用 MAKEINTRESOURCE是 OK的,不然的话应该直接放入图像的名字
If the image resource is to be loaded by name, the lpszName parameter is a pointer to a null-terminated string that contains the name of the image resource. If the image resource is to be loaded by ordinal, use the MAKEINTRESOURCE macro to convert the image ordinal into a form that can be passed to the LoadImage function
MSDN注释
happyhhb 2007-05-01
  • 打赏
  • 举报
回复
谢谢了,呵呵,结贴了我会给分的
关于第二个问题,刚才找出原因了,要显示外部文件必须加参数LR_LOADFROMFILE

但第一个问题还是无法解决,请高手支招,谢谢
Super.Jiju 2007-05-01
  • 打赏
  • 举报
回复
不晓得
帮顶拿分!
下载代码方式:https://pan.quark.cn/s/d5321a99c521 在信息技术网络架构领域,配置双块网卡于同一网络段内的静态路由是一项高级且具有实用价值的技术,其能够高效地管理和优化网络数据流,保障数据包能够沿最优路径传送,同时合理分配与控制内外网络资源的访问。本资料将详细阐述双块网卡同网络段静态路由的核心概念、配置机制及其应用实例。 ### 双块网卡同网络段静态路由概述 双块网卡同网络段静态路由指的是在一台主机上部署两个或更多网络接口卡(NICs),这些网卡可能接入同一个物理网络或不同的物理网络,但它们的IP地址归属于同一个网络段。在这种配置下,主机能够同时作为多个子网的成员,并通过静态路由表来引导数据包的传输路径。静态路由是由网络管理者手动设定的,它不依赖于动态路由协议,因而具备更高的稳定性和安全性。 ### 配置机制 在双块网卡同网络段静态路由的应用场景中,关键环节在于为各个网卡设定正确的默认网关与子网掩码,以及确立通往特定目标网络的静态路由条目。具体而言,每块网卡都必须拥有独立的IP地址和子网掩码,而默认网关则用于转发那些需要进入外部网络的数据包。此外,通过增设静态路由条目,可以明确指定某些特定目的地址的数据包应经由哪块网卡进行发送。 ### 实际操作流程 以下是从相关内容中总结出的实际操作流程: 1. **环境初始化**:确认两块网卡已正确安装,并配置了相应的IP地址与子网掩码。例如,一块网卡的IP地址为192.168.1.200,另一块为192.168.1.219,均属于192.168.1.0/24网络段。 2. **删除现有路由**:运用`routedelete 0.0.0.0`指令移除所有默认路由,以确保后续配置不会受到干扰。...

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧