网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.用VB编写WindowsCGI应用程序.
.在Windows操作系统中改变文件打开.
.VB中对字符串的处理及其扩展.
.VB编程的几个API函数的应用问题.
.加速VisualBasicForApplication(.
.解除网虫心病VB做定时断线程序.
.给应用程序添加“日积月累”对话.
.减少DoEvents语句的数量.
.一个自动更换墙纸的小软件.
.如何在VB中终止Windows系统.
.用VB6编写强力的windows隐藏引擎.
.VBCOM基础讲座之ActiveXEXEs.
.用VB编写FLASH动画播放器.
.关于VisualBasic6.0类开发(上).
.规范设计Windows应用软件菜单.
.利用VB设计打印复杂报表.
.HierarchicalFlexGrid控件.
.VisualBasic属性、方法和事件五.
.VB编程之路-如何让界面美化.
.关于数据报表的打印设置.

VB编程获取文件中集成的图标

发表日期:2006-2-27


----在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->

上一篇:自定义指定文件夹的图标 人气:4571
下一篇:用VB5.0设计能适应各种显示属性下的界面 人气:4095
浏览全部Visual Basic的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐