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

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

关于VB初学的问题?
在计算机编程中,算法是实现解决问题的关键,它通过一组明确的步骤将问题分解并最终得到解决方案。一个算法的执行过程,无论是逻辑推理还是具体编码,都是算法的实践。算法的实现可以分为两个部分,即解决问题的思路与实际操作的程序编写。一个有效的算法需满足五个关键特性:1. 有穷性:算法必须在有限步...

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

VB编程显示动画问题?
在VB编程中显示动画问题时,有两种常见方法可供选择。首先,你可以尝试使用Windows Media Player控件。打开此控件后,进入自定义设置选项,将选择模式设置为“None”。这样可以避免一些默认设置导致的动画显示异常问题。如果你希望尝试其他控件来解决动画显示问题,可以考虑使用ActiveMovie控件。该控件提供了更灵活...

急需vb编程求100以内所有奇数和及所有偶数和
为解决在VB编程中计算100以内所有奇数和及所有偶数和的问题,本文章将介绍四个方法。方法一:通过按钮“求2到100之间的偶数和”,代码如下:vb Private Sub Command1_Click()Dim i As Integer Dim s As Integer s = 0 For i = 2 To 100 Step 2 s = s + i Next i Print "2到100的所有...

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

VB中实时错误9:“下标越界”是什么意思?
在VB编程中,遇到错误9“下标越界”的情况,它意味着你试图访问一个数组时,尝试的下标超出了数组分配的空间范围。这种情况可能由于以下几个原因导致:一是数组声明时没有明确指定元素数量,如尝试访问未定义的MyArray(8),这会导致数组默认范围外的索引错误;二是下标值超过了数组的实际边界,比如数组长度...

相似回答
大家正在搜