读书人

无边框窗体的关闭有关问题

发布时间: 2012-03-22 17:43:57 作者: rapoo

求助: 无边框窗体的关闭问题,在线等!
把 form1 的 borderstyle 设置为 none ,同时设置 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
Private Const WS_SYSMENU = &H80000

Private Const GWL_STYLE = (-16)


Private Sub Form_Load()
Dim TempLng As Long

TempLng = GetWindowLong(Me.hwnd, GWL_STYLE)
TempLng = TempLng Or WS_SYSMENU '系统菜单
SetWindowLong Me.hwnd, GWL_STYLE, TempLng

End Sub

  于是再在 任务栏点鼠标右键,出现了 “关闭”、“移动”之类的可用菜单,但点了后没的反应啊。
  请问要怎样才能使这的“关闭”菜单起作用

[解决办法]
这个问题我解决不了! 应该是代码的问题

只是给程序可以弹出那个对话框 代码没写
或者捕获不到hwnd
[解决办法]
borderstyle 用正常的值,然后将边框标题隐藏起来

Private Sub Form_Load()
Dim TempLng As Long

TempLng = GetWindowLong(Me.hwnd, GWL_STYLE)
TempLng = TempLng And (Not WS_BORDER) And (Not WS_CAPTION)
SetWindowLong Me.hwnd, GWL_STYLE, TempLng
Me.Width = Me.Width + Screen.TwipsPerPixelX ' <-改变窗体大小已重新计算绘制窗体
End Sub

读书人网 >VB

热点推荐