欢迎光临
我们一直在努力

vb编程获取文件中集成的图标_visualbasic教程

建站超值云服务器,限时71元/月

—-在Win95下的应用软件使用了打量精美的图标,而很多图标资源是集成在EXE、DLL文件中的(例如Win95的回收站就使用了Shell32.dll中的图标,31号图标表示回收站空,32号表示回收站有被删除文件)在我们编程中,可以利用Win95的API函数ExtractIcon可以将EXE、DLL文件中的图标资源取出,下面通过一个VB的例子通过使用该函数将文件中包含的图标取出并且在一个图片框内浏览。

—-1、在Form1的General的Declarations中定义以下两个函数:

PrivateDeclareFunctionExtractIconLib”shell32.dll”Alias”ExtractIconA”(ByValhInstAsLong,ByVallpszExeFileNameAsString,ByValnIconIndexAsLong)AsLong
ExtractIcon函数包含三个参量:
hInst表示当前的程序实例
lpszExeFileName表示包含图标的资源文件名
nIconIndex表示要取出的图标的序号

—-如果nIconIndex为-1,则函数返回包含图标资源的文件的图标个数.

—-从文件中取出图标资源前,应首先调用该函数获得文件中包含的图标资源的个数.

—-如nIconIndex为图标资源的序号,则返回图标句柄.

PrivateDeclareFunctionDrawIconLib”user32″(ByValhdcAsLong,ByValxAsLong,ByValyAsLong,ByValhIconAsLong)AsLong
DrawIcon函数将图标画到一个图形设备上,
hdc为图形设备句柄,x,y为起始位置,
hIcon为图标句柄。

—-定义三个全局变量:

DimlNumAsLong图标的序号
DimlCountAsLong文件中包含的图标的总数
DimastrAsString包含图标的文件名

—-2、在Form1中添加以下控件:

a、CommandButton,Name属性设置为COpen
b、CommandButton,Name属性设置为
CPrv,Enabled属性设置为False
c、CommandButton,Name属性设置为
CNext,Enabled属性设置为False
d、CommonDialog,Name属性设置为
CommonDialog1,Filter属性设置为”可执行文件(*.exe)|
*.exe|动态链接库(*.dll)|*.dll|所有文件(*.*)|*.*”

—-3、全部源程序如下:

PrivateDeclareFunctionExtractIconLib”shell32.dll”Alias”ExtractIconA”(ByValhInstAsLong,ByVallpszExeFileNameAsString,ByValnIconIndexAsLong)AsLong
PrivateDeclareFunctionDrawIconLib”user32″(ByValhdcAsLong,ByValxAsLong,ByValyAsLong,ByValhIconAsLong)AsLong
DimlNumAsLong
DimlCountAsLong
DimastrAsString

PrivateSubCNext_Click()浏览下一个图标
lNum=lNum 1
x1=ExtractIcon(App.hInstance,astr,lNum)
Form1.Refresh
x2=DrawIcon(Form1.hdc,10,10,x1)
CPrv.Enabled=True
IflNum=lCountThen
CNext.Enabled=False
EndIf
EndSub

PrivateSubCOpen_Click()打开文件
Dimx1AsLong
Dimx2AsLong

CommonDialog1.ShowOpen
lCount=ExtractIcon(App.hInstance,CommonDialog1.filename,-1)
IflCount>0Then
astr=CommonDialog1.filename
lNum=0
Form1.Caption=astr
CPrv.Enabled=False:CNext.Enabled=True
x1=ExtractIcon(App.hInstance,astr,lNum)
Form1.Refresh
x2=DrawIcon(Form1.hdc,10,10,x1)
Else
x1=MsgBox(“FileContainnoiconresource.”)
CPrv.Enabled=False:CNext.Enabled=False
EndIf
EndSub

PrivateSubCPrv_Click()浏览前一个图标
lNum=lNum-1
x1=ExtractIcon(App.hInstance,astr,lNum)
Form1.Refresh
x2=DrawIcon(Form1.hdc,10,10,x1)
CNext.Enabled=True
IflNum=0Then
CPrv.Enabled=False
EndIf
EndSub->

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » vb编程获取文件中集成的图标_visualbasic教程
分享到: 更多 (0)