求出本程序主图标的位置及其大小代码错在哪里?(50分)

  • 主题发起人 panzichan
  • 开始时间
P

panzichan

Unregistered / Unconfirmed
GUEST, unregistred user!
我需要求出本程序主图标(即本程序在资源管理器显示的图标)的位置及其大小,例:本程序大小为567KB*1024,从第此60KB起(即61KB)为主图标存放的起始位置,主图标大小为1.05KB,我如何求出61KB和1.05KB这两个数值?以下程序代码并不能求出,错在哪里?请各位多多指教
procedure TForm1.Button1Click(Sender: TObject);
var
hRsrc,hMem:THandle ;
nDataLen:DWORD;
P:pointer;
begin
hRsrc := FindResource(hInstance, MAKEINTRESOURCE(128), RT_GROUP_ICON);
hMem := LoadResource(hInstance, hRsrc );
nDataLen := SizeofResource( hInstance, hRsrc );//为何得不出数据?
P:=Lockresource(hMem);
FreeResource(hMem);
end;
 
To use a resource immediately, an application should use one of the
following resource-specific functions to find and load the resources
in one call:
hMem:=LoadIcon(hInstance,ICON_NAME);
试试。
 
小雨哥:
还是不行,请多多指导.
 
唉,Delphi 对付 MS 的资源有点费劲。
hRsrc := FindResource(hInstance, MAKEINTRESOURCE(128), RT_GROUP_ICON);
上句改一改,我也不知道你用在什么地方,假如我们取 Delphi 做的程序的主图标,
我们改动如下:
procedure TForm1.Button1Click(Sender: TObject);
var
hRsrc,hMem:THandle ;
nDataLen:DWORD;
P:pointer; // 这段里这个没有使用 ?
begin
hRsrc := FindResource(hInstance, {MAKEINTRESOURCE(128)}'MAINICON', RT_GROUP_ICON);// 看清楚我在这句的改动,要大写,要带引号
hMem := LoadResource(hInstance, hRsrc );
nDataLen := SizeofResource( hInstance, hRsrc );
P:=Lockresource(hMem);
Caption:=IntToStr(nDataLen);// 这句是我加的调试代码,如果找到资源,在 Form 的 Cpption 上显示它的大小
FreeResource(hMem);
end;
运行,看看 Caption 上有没有一个非 0 的数字 ?
 
小雨哥:
那主图标存放的起始位置呢,怎求出?
 
您装了 Delphi 了吗? 5、6、7 或其他什么版本?
如果您装了,请在安装的目录里找到下面的路径:
%Delphi%/Demos/Resxplor
它就是您发了很多贴在找的那个资源文件读取程序的例子。

另外补充一点,请及时结贴,象你另一个有关线程的贴子,已经被回答了,
就要结掉,不然以后别人就不回答了。相同的帖子可以请版主收回分数,当然
重复发贴不好,你向版主说明就行。
 
小雨哥:
我是个新手,很多我看不懂,你再帮帮忙好吗?
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
938
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部