VB编程问题

如何获取桌面的图标

在Windows应用中,软件使用了美观的图标。很多图标资源集成在EXE、DLL文件中。编程时,我们可以利用Windows的API函数ExtractIcon将EXE、DLL文件中的图标资源取出。

  在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'包含图标的文件名

  在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|所有文件(*.*)|*.*"

  全部源程序如下:

PrivateDeclareFunctionExtractIconLib"shell32.dll"Alias"ExtractIconA"(ByValhInstAsLong,
ByVallpszExeFileNameAsString,ByValnIconIndexAsLong)AsLong
PrivateDeclareFunctionDrawIconLib"user32"(ByValhdcAsLong,ByValxAsLong,ByValyAs
Long,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
温馨提示:内容为网友见解,仅供参考
第1个回答  2005-08-23
键盘上有个PrintScreen键..位于方向键那列的最上方最靠左的那个..
按一下...
然后打开任一绘图或图形处理软件.Ctrl+V就可以了.

VB编程的问题!会VB语言的请帮帮我!
在VB编程中,处理三角函数问题时,通常使用弧度作为计算单位。例如,计算角度值时,需先将度数转换为弧度。若要计算文本1所示的表达式,首先,需要理解其中的符号含义。Atn表示反正切函数,Cos表示余弦函数。在VB中,需要将角度转换为弧度进行计算。对于文本1中的第一部分:Atn(-0.5 \/ Sqr(-0.5 * 0...

VB编程的问题!会VB语言的请帮帮我!
在编程时,将度数转换为弪,以便与VB中的三角函数函数兼容,是一个常见的操作。了解这个过程有助于更有效地处理与角度相关的计算任务。因此,在VB编程中处理三角函数时,关键是确保度数与弪之间的正确转换,以充分利用语言提供的数学功能。通过实践和理解这个过程,你将能够更轻松地解决相关问题。

VB问题,一个简单的编程!
首先,VB(Visual Basic)是一门可视化编程语言,由Microsoft开发。它使用图形界面和拖放功能,使得编程过程更为直观。初学者可以通过简单的操作快速构建应用程序。当你遇到编程问题时,尝试从以下几个方面入手:1. **查阅文档与教程**:在深入使用任何编程语言之前,首先应该阅读官方文档和教程。这能够提供关...

VB编程问题
VB6的ADO控件支持ACCESS2000及更高版本,而DATA控件在原VB5中存在一些问题,建议改用ADO控件,相应的代码需要调整。ADO控件如DATAGRID,MSHFLEXGRID,DATALIST,DATACOMBO等,完全能够支持ACCESS2000等数据库,相较于DATA控件,使用ADO控件更加灵活。ACCESS2000与ACCESS2000在兼容性上存在一些差异,但ACCESS2000能够打开AC...

vb编程中有这样一道题,对于初学者是在不懂,谢谢!
在编写VB代码时,熟练掌握这些基本数学函数的使用对于初学者来说至关重要。确保正确使用exp和log函数,同时注意括号的使用,可以避免在计算过程中出现错误。记住,正确应用这些函数可以简化代码,提高程序的可读性和效率。总的来说,理解和正确使用exp和log函数在VB编程中是基本技能之一。它们在处理数学问题和...

关于VB6.0编程问题
1、在VB中,建立一个FORM,在其上放置两个命令按钮,将Command1的Caption属性改为EXCEL,Command2的Caption属性改为End。然后在其中输入如下程序:Dim xlApp As Excel.Application '定义EXCEL类 Dim xlBook As Excel.Workbook '定义工件簿类 Dim xlsheet As Excel.Worksheet '定义工作表类 Private Sub ...

vb难点是什么原因
VB作为一门包含大量高级语言特性的编程语言,其学习难度主要源于对计算机底层原理、数据结构和算法的深入理解需求。对于编程初学者来说,这些知识门槛无疑增加了学习的难度。加之编程经验的缺乏,理解并运用VB语言面临更多挑战。与其他编程语言相比,学习VB需要投入更多的时间和耐心。然而,对于具备一定编程基础...

vb编程列表框换行及滚动条问题
在VB编程中处理列表框(ListBox)的换行及滚动条问题,可以通过以下步骤实现:首先,要实现列表框中的元素能够自动换行,需要将属性`MultiSelect`设置为`2`。这将允许列表框同时选择多个项,即使列表项超出列表框的可视区域时,列表项也能自动换行,从而保持列表内容的完整性。接着,为了处理列表框的滚动事件...

一个关于vb程序设计的问题
一个简单的VB程序设计案例,利用Timer控件和WindowsMediaPlayer,结合显示时间和操作按钮的控件,实现了一个闹钟功能。下面将详细解释代码逻辑和功能实现。首先,定义一个全局变量nl,用于控制闹钟功能的启用状态。当用户点击“设置闹钟时间”按钮时,程序会检查输入的三个时间值是否为空。如果所有时间值均非空...

关于VB的问题!
首先,VB6并非完全面向对象编程,而VB.NET则是完全面向对象的。这意味着在VB.NET中,程序员能够利用更丰富的面向对象特性来开发程序。其次,VB.NET是微软.NET战略计划的一部分。为了运行VB.NET编写的程序,用户需要在电脑上安装.NET框架。然而,由于这个框架的限制,许多程序员尚未广泛使用VB.NET,因为...

相似回答
大家正在搜