游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: niefeng

请问关于loadimage函数使用资源文件时的使用方法

[复制链接]

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2005-9-20 11:35:00 | 显示全部楼层

Re: 请问关于loadimage函数使用资源文件时的使用方法

long LoadImage(LPCTSTR filepath)


这个函数哪里来的?

22

主题

209

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
发表于 2005-9-21 18:13:00 | 显示全部楼层

Re:请问关于loadimage函数使用资源文件时的使用方法

long LoadImage(LPCTSTR filepath)  这是一个 VC 的函数,
所以。。。。。 VB 就,,,,,,,,,,,,

18

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2005-9-23 10:08:00 | 显示全部楼层

Re:请问关于loadimage函数使用资源文件时的使用方法

LoadImage函数返回的是一个long
用CreateCompatibleBitmap创建一个设备无关的位图
用SelectPalette选择一个24位以上的调色板
用Bitbil将内存中的createcompatblebitmap创建的位图返回到目标
大概意思应该是这样
但是我没有实现,水平在海拔一下几千公里。sorry

18

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2005-9-23 10:12:00 | 显示全部楼层

Re:请问关于loadimage函数使用资源文件时的使用方法

VB的LoadPicutre函数实在垃圾,不支持高位真彩色图形,简单加载时会失真
楼主是不是这个原因才用LoadImage函数,

18

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2005-9-23 10:52:00 | 显示全部楼层

Re:请问关于loadimage函数使用资源文件时的使用方法

LoadImage声明:
Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2 As Long) As Long

前两个函数分别是句柄和名字:hInst如果0表示加载衣服固有图像,一般都用0,lpsz如果指定了hinst就是使用资源的标识符,如果hinst空代表文件名
un2是消息组合,windows消息嘛,那可是要问老比去了。没有完整的资料
例:
const LR_LOADFROMFILE=&H10
CONST IMAGE_BITMAO=0
CONST IMAGE_ICON=1
CONST IMAGE_CURSOR=2
...
DIM hBit as long
hBit=loadimage(app.hinstance,"C:\windows\logow.sys",image_bitmap,0,0,LR_loadfromfile)
''''

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2005-9-23 11:31:00 | 显示全部楼层

Re: 请问关于loadimage函数使用资源文件时的使用方法

不觉得对,在使用API函数的时候,遇到不会用的,只要查MSDN就可以了,虽然是E文的,但是还是比较容易懂的,我的E文也不好,将就着解释一下吧(不能说是翻译),一般说来[in]表示参数是传值的,[out]表示参数是传地址的,函数返回,参数能获得一些新的信息


语法

HANDLE LoadImage(          HINSTANCE hinst,
    LPCTSTR lpszName,
    UINT uType,
    int cxDesired,
    int cyDesired,
    UINT fuLoad
);

参数

hinst
[in] 这是模块的句柄,每个PE的应用程序,DLL运行的时候都有自己的句柄,我们在读取其中的资源信息的时候,我们可以通过句柄来访问,如果我们直接读取一幅图片文件,这个参数设置为0就可以了

lpszName
[in] 我不知道大家用过VC没有,每个资源都有自己的名称,如果我们不知道资源的名称,只知道资源的编号,可以通过MAKEINTRESOURCE宏来转化成字符串,这个宏的原型是
#define MAKEINTRESOURCE( res ) ((ULONG_PTR) (USHORT) res)
如果我们直接读取一幅图片文件,这个参数就是图片文件的文件名

如果是直接读取图片文件,目前只支持下面3种格式
OBM_ OEM bitmaps
OIC_ OEM icons
OCR_ OEM cursors

uType
[in] 资源的类型,可以是下面三种中间的一种
IMAGE_BITMAP  Loads a bitmap.
IMAGE_CURSOR  Loads a cursor.
IMAGE_ICON    Loads an icon.

cxDesired
[in] 资源图片的宽度(像素单位),如果fuLoad参数是LR_DEFAULTSIZE,那么我们可以把这个参数设置为0,系统自己会读取图片实际宽度

cyDesired
[in] 跟上面一样,这个是高度

fuLoad
[in] 这个参数是个复合值,可以是下面的值中的一个或者多个,表明了读取的方式

LR_DEFAULTCOLOR         默认值
LR_CREATEDIBSECTION
LR_DEFAULTSIZE
LR_LOADFROMFILE
LR_LOADMAP3DCOLORS
LR_LOADTRANSPARENT
LR_MONOCHROME
LR_SHARED
LR_VGACOLOR

要说明的就是2个参数LR_DEFAULTSIZE和LR_LOADFROMFILE,如果设置为LR_LOADFROMFILE,表明我们是直接读取一幅图片文件,那么hinst就要设置为0,lpszName是文件的名称


返回值
成功返回的是一个位图句柄,可以转化为对应的HBITMAP,HCURSOR,HICON
失败返回的就是0


备注

参考
CopyImage, GetSystemMetrics, LoadBitmap, LoadCursor, LoadIcon

18

主题

110

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2005-9-23 13:31:00 | 显示全部楼层

Re:请问关于loadimage函数使用资源文件时的使用方法

bigbook2000
您能帮我写一个加载24位以上真彩色图片的类吗?
我被这个烦透了,老是搞不出来,而LoadPicture只支持16位的

1

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2005-9-25 00:51:00 | 显示全部楼层

Re:请问关于loadimage函数使用资源文件时的使用方法

谢谢上面的各位大哥,不过还有问题不懂啊!就是hinst参数,如果是从资源文件中加载位图,该参数该如何设呢?我试着设为:App.hInstance,但是好像不对。(譬如我的资源文件叫pic.res)
顺便再问个问题:好像有个api函数叫:loadresimage,别人告诉的(绝对不是loadrespicture),专门从资源文件中提取位图文件,不过MSDN查不到,我试了一下,有些作用,但加载的位图完全不是我资源文件的位图,请各位大哥讲解一下这个函数吧!谢谢了

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-1-17 17:05:00 | 显示全部楼层

Re:请问关于loadimage函数使用资源文件时的使用方法

本人也碰到了这个问题,望高手出手.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 06:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表