发新话题
打印

弱问题:如何用文件名而不是ID号显示图像

弱问题:如何用文件名而不是ID号显示图像

CBitmap bitmap;
        bitmap.LoadBitmap(IDB_BITMAP1);
        BITMAP bm;
        bitmap.GetBitmap(&bm);
        CDC compatibleDC;
        compatibleDC.CreateCompatibleDC(pDC);
        compatibleDC.SelectObject(&bitmap);
        pDC->StretchBlt(0,0,bm.bmWidth,bm.bmHeight,&compatibleDC,0,0,
                bm.bmWidth,bm.bmHeight,SRCCOPY);

我遇到的问题是,如果把红色的代码换成bitmap.LoadBitmap("1.bmp");    就是用文件名代替ID号,结果无法显示

1.bmp是存在的。

我知道问题很弱,但我是没有基础的菜鸟,想了很多没头没脑的办法还是解决不了,还请高手,版主浪费点时间,指点迷津。不胜感激~!

TOP

IDB_BITMAP1是程序的资源,如果是文件的话,你应当加上路径.

TOP

文件我已经把它考到了程序目录下了,我也试过 用绝对路径名,还是不管用阿,编译能通过 ,但就是运行就出错。

TOP

LoadBitmap 只能加载工程中的资源,不能加载图型文件

这是MSDN中的说明
LoadBitmap : Initializes the object by loading a named bitmap resource from the application’s executable file and attaching the bitmap to the object.

建议你将相关文件加入系统资源,然后调用.

TOP

还是不行..我通过工程---添加工程——文件 把“1.bmp”添加到工程中,结果出错,显示说该文件已经存在于工程中的报错对话框。

另外,我发现,在bitmap.LoadBitmap()语句中,写任何文件名,编译都不报错如LoadBitmap("asdf.bmp") 编译就不报错

用调试 运行的时候,总是到bitmap.GetBitmap(&bm);语句运行出错,错误就是运行整个程序时出现的那个错误。

这个错误,应该是在bitmap.LoadBitmap()中出的,它并没有真的加载位图“1.bmp”到位图 变量bitmap中

还请大虾 帮我分析分析咋回事,谢谢啦

TOP

不能这样加入资源文件,将文件加入资源的方法是
点击 菜单 Insert ,然后点 Resource ,这时出现一个窗口,选择Bitmap,然后点 Import,在选择文件的对话框中选择所有文件,选中后,在新出现在窗口出在Resource type中输入Bitmap,然后点OK

TOP

俺明白你的意思,按你的方法加入资源以后,就是在ResourceView页项中出现新的资源Bitmap,新加入的位图文件索引号默认为IDB_BITMAP1。这种方法最早就用过了,可是不行啊。。

郁闷中......

TOP

我想换一个路子 ,
就是在程序中  "用语句"  来实现把文件导入资源.
比如,在我的程序目录下有一个文件"1.bmp",然后用一条语句将其导入资源,获得他的ID号,在用ID号来实现位图的显示(程序中用ID号是可以正确显示的,但 用他的文件名就是不行,真是郁闷)

我现在不懂的是如何"用语句"实现将文件导入资源

请教大虾,我的想法可行吗,用什么语句来实现文件的导入呢???拜托~~!

TOP

你去这里看看,有没有你需要的源代码。

http://www.lihuasoft.net/source/list.php?frmid=19

Bitmap 位图、光标等资源编程的例子
http://www.lihuasoft.net/source/show.php?id=729

TOP

发新话题