中易网

VB6.0无边框的窗口,任务栏关闭窗口失效,求解决方法。

答案:1  悬赏:20  
解决时间 2021-01-05 16:28
VB6.0无边框的窗口,任务栏关闭窗口失效,求解决方法。
最佳答案
‘鼠标左键移动窗体,右键弹出标题栏菜单
Option Explicit
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 Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const HTCAPTION = 2
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const WS_CAPTION = &HC00000
Private Const WS_SIZEBOX = &H40000
Private Const WS_BORDER = &H800000
Private Const WS_DLGFRAME = &H400000
Private Const GWL_STYLE = (-16)
Private m_dwOldStyle As Long
Private Type POINTapi
    x As Long
    y As Long
End Type
Private Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hwnd As Long, ByVal lprc As Any) As Long
Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTapi) As Long
Private Sub Form_Load()
    m_dwOldStyle = GetWindowLong(Me.hwnd, GWL_STYLE)  '获取窗口原样式
    Call SetWindowLong(Me.hwnd, GWL_STYLE, m_dwOldStyle And Not WS_CAPTION And Not WS_SIZEBOX) '去除标题栏和边框
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) '左键移动窗口
    If Button = vbLeftButton Then
       ReleaseCapture
       Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0) '将客户区作为标题栏来处理
    End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) '显示右键标题栏菜单
Dim p As POINTapi, sm&
    If Button = 2 Then
        GetCursorPos p
        sm = TrackPopupMenu(GetSystemMenu(Me.hwnd, 0), &H0& Or &H100&, p.x, p.y, 0, Me.hwnd, ByVal 0&)
    End If
    If sm <> 0 Then
        SendMessage Me.hwnd, &H112, sm, 0&
    End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
        Call SetWindowLong(Me.hwnd, GWL_STYLE, m_dwOldStyle) '恢复原窗口样式
End Sub
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
成语谜语:现今大多兴跳槽
蚂蚁花呗每日按百分之0.05计息啥意思 怎么还
我在英雄联盟获得幸运召唤师英雄皮肤1折是不
阴阳师手游黑晴明遗失秘宝的小纸人在哪打
宣传先进人物,学习先进事迹有什么现实意义
为什么AE7.0 安装Trapcode form插件 注册后还
想去中粮集团工作,容易进去吗?需要哪些资格
图片尺寸超出范围,请用"发送图片"发送怎么解
2006年开学的小学生是什么时候入学的
学生骑什么山地车好
比熊狗狗叫什么名字好呢?
怎么用Cisco Packet Trac表示
若a-b=1,则1/2(a^2+b^2)-ab=
府南河名字的由来
烟台古酿31.8度价格?
推荐资讯
DNF单机版9.3战法转职刷的世帕罗塔下层在哪里
有一首歌的的名字叫8000什么,大概有一句是一
请问大家掌盟英雄联盟不小心拉黑好友了,然后
比例尺越大是否越详细?
相亲对象不回消息了。今天不是3.8嘛,我这种
单招综合素质测试题
7.2チ7ᅧ913约等于多少列竖式
男生会因为友情牵挂一个女生吗?
怎么从面相看出女人经历过几个男人
朵色2018最新代言人是谁
请问谁知道哪里可以下载到柬埔塞地图,详细的
星露谷物语怎么烹饪 星露谷物语烹饪方法攻略
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?