为了做一个XP风格的弹出框(msgbox 那种) 我用了两个多小时, 也不能达成我的目的, 请指点!窗体里面有要类似于 msgbox 那些提示图标, 用于activeskin 好像不行啊, 因为图标无法显示.

解决方案 »

  1.   

    用这个试试看:Option Explicit
    Private Const IDI_EXCLAMATION As Long = 32515&
    Private Declare Function LoadIcon Lib "user32.dll" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As Long) As Long
    Private Declare Function DrawIcon Lib "user32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
    Private Declare Function DestroyIcon Lib "user32.dll" (ByVal hIcon As Long) As LongPrivate Sub Form_Click()
    Dim hIcon As Long
    hIcon = LoadIcon(0, IDI_EXCLAMATION)
    DrawIcon Me.hdc, 0, 0, hIcon
    DestroyIcon hIcon
    End Sub
    可以画一个。用sndPlaySound之类的,自己做一个算了
      

  2.   

    注意哦,我改过声明的:
    Private Declare Function LoadIcon Lib "user32.dll" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As Long) As Long原来的是
    Private Declare Function LoadIcon Lib "user32.dll" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As String) As Long当然,如果你想鱼和熊掌兼得,可以这样声明
    Private Declare Function LoadIcon Lib "user32.dll" Alias "LoadIconA" (ByVal hInstance As Long, ByVal lpIconName As Any) As Long
      

  3.   

    一楼的答案得啊, 不过有个问题: 
    要把代码放在事件里面才行的.窗体自己加载时不能显示 Dim  hIcon  As  Long  
    hIcon  =  LoadIcon(0,  IDI_EXCLAMATION)  
    DrawIcon  Me.hdc,  0,  0,  hIcon  
    DestroyIcon  hIcon
      

  4.   

    那你把窗体的AutoRedraw设为True,然后放到Load事件里面就可以了阿。或者利用Paint事件也是可以的。