以下为让一个无标题栏窗体(BorderStyle设置为0)在任务栏上显示图标的代码片段。我已将ShowInTaskbar设置为True了(允许窗体在任务栏上显示),最终结果运行程序后在任务栏可以显示出图标和程序名,这个图标也同样支持右键菜单,可这个右键菜单中的“关闭”命令显示是可用的,但是执行后却没有任何效果,其它菜单都很正常。不知道有哪位朋友遇到过这种情况,如果让这个“关闭”命令起作用?Private Declare Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Const GWL_STYLE = (-16)
Const WS_SYSMENU = &H80000
Private Declare Function GetCursorPos Lib "USER32" (lpPoint As pointapi) As Long
Private Type pointapi
x As Long
y As Long
End TypePrivate Sub Form_Load()
Dim lStyle As Long
lStyle = GetWindowLong(hwnd, GWL_STYLE) Or WS_SYSMENU
SetWindowLong hwnd, GWL_STYLE, lStyle
Me.Show
End Sub
Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Const GWL_STYLE = (-16)
Const WS_SYSMENU = &H80000
Private Declare Function GetCursorPos Lib "USER32" (lpPoint As pointapi) As Long
Private Type pointapi
x As Long
y As Long
End TypePrivate Sub Form_Load()
Dim lStyle As Long
lStyle = GetWindowLong(hwnd, GWL_STYLE) Or WS_SYSMENU
SetWindowLong hwnd, GWL_STYLE, lStyle
Me.Show
End Sub
preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc)
......
......
......Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long If Msg = WM_SYSCOMMAND Then
If wParam = SC_CLOSE Then Unload Form1
Unload Form2
End If
End If
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)End Function不知道还有没有更好的办法