要使用 DrawIcon 函数绘制出来
格式如下:
DrawIcon Picture1.hdc, 0, 0, hIcon

解决方案 »

  1.   

    有程序可以实现把系统的图票提取出来生成ICO文件
      

  2.   

    我的问题总是没人知道我为CSDN悲哀……
      

  3.   

    IDI_QUESTION?
    常数对吗?
    是不是有一个LoadStandardIcon呀
    没做过,电脑也坏了,所以帮不上忙。
      

  4.   

    把下面的代码放在module中
     
    Option Explicit
     
    Public Const MAX_PATH = 260
    Public Const SHGFI_DISPLAYNAME = &H200
    Public Const SHGFI_EXETYPE = &H2000
    Public Const SHGFI_SYSICONINDEX = &H4000 'system icon index
    Public Const SHGFI_LARGEICON = &H0 'large icon
    Public Const SHGFI_SMALLICON = &H1 'small icon
    Public Const SHGFI_SHELLICONSIZE = &H4
    Public Const SHGFI_TYPENAME = &H400
    Public Const ILD_TRANSPARENT = &H1 'display transparent
    Public Const BASIC_SHGFI_FLAGS = SHGFI_TYPENAME Or _
                                     SHGFI_SHELLICONSIZE Or _
                                     SHGFI_SYSICONINDEX Or _
                                     SHGFI_DISPLAYNAME Or _
                                     SHGFI_EXETYPEPublic Type SHFILEINFO
       hIcon As Long
       iIcon As Long
       dwAttributes As Long
       szDisplayName As String * MAX_PATH
       szTypeName As String * 80
    End TypePublic Declare Function SHGetFileInfo Lib _
       "shell32.dll" Alias "SHGetFileInfoA" _
       (ByVal pszPath As String, _ 
        ByVal dwFileAttributes As Long, _ 
        psfi As SHFILEINFO, _ 
        ByVal cbSizeFileInfo As Long, _ 
        ByVal uFlags As Long) As LongPublic Declare Function ImageList_Draw Lib "comctl32.dll" _
       (ByVal himl As Long, ByVal i As Long, _
        ByVal hDCDest As Long, ByVal x As Long, _
        ByVal y As Long, ByVal flags As Long) As LongPublic shinfo As SHFILEINFO
    在form中:
     
    在form中添加2个按钮(Command1 & Command2),两个label(Label1 & Label2), 两个picture boxe (pixSmall and pixLarge). 保证form和两个picturebox的scale modes设置为1(Twips) 
    设置两个picture box的属性如下: 
    Appearance = 0 (flat) 
    AutoRedraw = True 
    AutoResize = False 
    BorderStyle = 0 (none) 
    设置pixSmall的属性: 
    Height = 240 twips 
    Width = 240 twips 设置pixLarge的属性: 
    Height = 480 twips 
    Width = 480 twips 把下面的代码放在Form中Option ExplicitPrivate Sub Form_Load()
       
       Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2End Sub 
    Private Sub Command2_Click()   Unload MeEnd Sub 
    Private Sub Command1_Click()
       
     
       Dim hImgSmall as Long   'the handle to the system image list
       Dim fName As String     'the file name to get icon from
       Dim fnFilter As String  'the file name filter   
       Dim r As Long
       
        
       On Local Error GoTo Command1ErrorHandler
       
         
       fnFilter = "All Files (*.*)|*.*|"
       fnFilter = fnFilter & "Applications (*.exe)|*.exe|"
       fnFilter = fnFilter & "Windows Bitmap (*.bmp)|*.bmp|"
       fnFilter = fnFilter & "Icon Files (*.ico)|*.ico"   CommonDlg1.CancelError = True
       CommonDlg1.Filter = fnFilter
       CommonDlg1.ShowOpen   fName = CommonDlg1.FileName
       
         
       hImgSmall& = SHGetFileInfo(fName, 0&, _
                                  shinfo, Len(shinfo), _
                                  BASIC_SHGFI_FLAGS Or SHGFI_SMALLICON)   hImgLarge& = SHGetFileInfo(fName, 0&, _
                                  shinfo, Len(shinfo), _
                                  BASIC_SHGFI_FLAGS Or SHGFI_LARGEICON)
       
        
        Label1.Caption = Left$(shinfo.szDisplayName, _
                   InStr(shinfo.szDisplayName, Chr$(0)) - 1)    Label2.Caption = Left$(shinfo.szTypeName, _
                   InStr(shinfo.szTypeName, Chr$(0)) - 1)
       
      
       pixSmall.Picture = LoadPicture()
       pixSmall.AutoRedraw = True   pixLarge.Picture = LoadPicture()
       pixLarge.AutoRedraw = True
       
      
       Call ImageList_Draw(hImgSmall&, shinfo.iIcon, pixSmall.hDC, 0, 0, ILD_TRANSPARENT)
       Call ImageList_Draw(hImgLarge&, shinfo.iIcon, pixLarge.hDC, 0, 0, ILD_TRANSPARENT)
       
       pixSmall.Picture = pixSmall.Image
       pixLarge.Picture = pixLarge.Image
       
     
    Exit SubCommand1ErrorHandler:
    Exit SubEnd Sub
    说明:
    运行这个工程, 任意选择文件。在关闭common dialog时, 和所选文件关联的大小图标(或系统默认图标)就会显示, 条件是,该文件在注册表中有关联图标.
      

  5.   

    huanggx(大侠):
    你误会了。
    我只是要调用系统的错误、警告、问题、消息等图标
    我不想在程序中加入这些图标,所以需要用API调用它。
      

  6.   

    没有问题呀?这是我的代码:Private Declare Function LoadIcon Lib "user32" Alias "LoadIconA" _
            (ByVal hInstance As Long, ByVal lpIconName As Long) As Long
    Const IDI_QUESTION = 32514&Private Sub Command1_Click()
        Dim h As Long
        
        h = LoadIcon(0, IDI_QUESTION)
        Debug.Print h
    End Sub可以正确返回Icon的ID
      

  7.   

    你的参数是正确的,但是这个函数只能装载当前系统可用的尺寸和颜色深度的ICON。如果不行,请用LoadImage函数
      

  8.   

    其实这四个图标在USER32.DLL中,你可以用浏览图标对话框看一看。
      

  9.   

    我知道,在Win98中是这样
    但Win2000中呢?