如何用*.res 文件引入图片,并实现鼠标在按扭中移入移出来切换图片。(100分)

  • 主题发起人 主题发起人 metezb
  • 开始时间 开始时间
M

metezb

Unregistered / Unconfirmed
GUEST, unregistred user!
*.res文件是如何在安装时写入注册表的。
{$ R *.res}
......

 
>*.res文件是如何在安装时写入注册表的。
什么意思?
*.res是用image editor编辑的,位图可以用image editor 加入到*.res中,
也可用VC的资源编辑器。
 
噢,还有一问呢,
这样:
TmyButton=class tbutton
private
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;

再在实现中:
procedure TmyButton.CMMouseEnter(var Message: TMessage);
begin
//画图片1
end;
procedure CMMouseLeave(var Message: TMessage);
begin
//画图片2
end;
 
好快呀,呵呵,搞个TRANSBTN吧
 
loadbitmap(windows api 函数)
就可以把资源文件读入,然后就可以画拉
 
amo的方法不一定可行
 
呵呵,
不知哪一点不可行?

 
多谢各位帮忙。
我是想问资源文件是如何在软件安装时实现的。
 
资源文件和软件安装有什么关系? 你编译的时候就已经编译到exe里面了.
 
多谢各位帮忙。
我是想问资源文件是如何在软件安装时实现的。
 
在软件安装之前,资源文件就已经被编译到exe里面了,你得到的就是一个exe文件,
没有单独的res文件.
 
多谢各位帮忙。
不知是如何定位 *.res 。
loadbitmap(windows api 函数中填?才能将它赋给SPEEDBUTTON.glyph
 
我一般是这么做的,不知是否标准:
var r:TResourceStream;
bmp:tbitmap;
begin
bmp:=tbitmap.create;
r:=TResourceStream.Create(HInstance, 'SAMPLE', 'BITMAP');
^^^^^^^资源的名字
bmp.LoadFromStream(r);
 
bitmap.LoadFromResourceName(HInstance, 'YOUR_BMP_NAME'); // 按名字加载
或者
bitmap.LoadFromResourceID(HInstance, ResID); // 按顺序号加载
 
eyes: 我用的方法没有什么问题吧?
 
请问如何*.res的图片组中取得某一个图片
 
每一个图片保存到res时都有自己唯一的名字
 
也有一个唯一的顺序号
 
是指定名字还是ID,是把它赋给一个TBITMAP,还是在bitmap.LoadFromResourceName(HInstance, 'YOUR_BMP_NAME');
之后,直接将*.RES中的图片名赋给SPEEDBUTTON.glyph吗?
即SPEEDBUTTON.glyph:=bmp_name;
 
bitmap.LoadFromResourceName(HInstance, 'YOUR_BMP_NAME');
SPEEDBUTTON.glyph.assign(bitmap);

你的例子里,bmp_name只是一个字符串,bitmap是一个tbitmap对象,
SPEEDBUTTON.glyph也是一个tbitmap对象,所以应该:

SPEEDBUTTON.glyph.assign(bitmap);
 
后退
顶部