首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 当去除窗口标题栏后,点击系统菜单的移动菜单项后,无法正常拖动窗口 [无满意答案结贴,结贴人:jy497759649]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jy497759649
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-07-06 21:01:26 楼主
    当用GetWindowLong 、SetWindowLong去除窗口标题栏后,在MouseDown事件中用ReleaseCapture、SendMessageLong来拖动窗口.当点击系统菜单的 "移动(M)" 菜单项后,无法正常拖动窗口,需要单击一下窗口后才能正常拖动,请哪位高手帮忙解决,小弟在此先谢了.
    200  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • myjian
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-07-06 21:52:451楼 得分:0
    没明白是啥效果.

    把代码放出来看看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jy497759649
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-06 21:55:292楼 得分:0
    好的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jy497759649
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-06 21:56:333楼 得分:0
    稍等一下,我还要现在编起来.我的代码丢了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jy497759649
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-06 21:58:294楼 得分:0
    找到了
    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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function ReleaseCapture Lib "user32" () As Long
    Private Const GWL_STYLE = (-16)
    Private Const WS_CAPTION = &HC00000                  '  WS_BORDER Or WS_DLGFRAME
    Private Const WS_SIZEBOX = &H40000
    Private Const HTCAPTION = 2
    Private Const WM_NCLBUTTONDOWN = &HA1

    Private Sub Form_Load()
      Dim OldStyle As Long
      ScaleMode = 3
      ForeColor = vbGreen
      OldStyle = GetWindowLong(hWnd, GWL_STYLE)
      SetWindowLong hWnd, GWL_STYLE, OldStyle 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
        If Y >= 0 And Y <= 25 Then
            ReleaseCapture
            SendMessageLong hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0
        End If
      End If
    End Sub

    Private Sub Form_Paint()
      Line (0, 0)-(ScaleWidth, 25), vbBlue, BF
      CurrentX = 10
      CurrentY = 10
      Print "标题栏"
    End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SilenceNet
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-07 08:57:405楼 得分:0
    试下其它程序重画过后的窗口
    千千。。360.。世界之窗。。 刚测试过跟你所说的一样。。
    点击系统菜单的“移动”用鼠标都无法拖动窗口
    但用方向键可以移动。。

    算了吧。。。 这问题也许没解。。。 或者不重要。。 否则其它程序不会忽视的

    很少人用系统菜单中的“移动”

    直接拖动标题栏就能移动窗口。。有几个人会先点系统菜单再来移动窗口呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SilenceNet
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-07 08:59:026楼 得分:0
    呵呵。。
    QQ聊天窗口同样是这种情况
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jy497759649
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-07 21:53:247楼 得分:0
    这我知道,但是我对这问题非常看重,我喜欢解决这种不可能的问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jy497759649
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-07 21:57:348楼 得分:0
    实际上是可以,我在测试时,发现其他的程序(诸如QQ、金山词霸等,包括你所说的)都没有实现这个功能,但是我发现Axialis IconWorkshop 实现了,而且正是我想要的那种结果,不信的话,下载试试!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jy497759649
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-09 20:03:329楼 得分:0
    高手来呀................
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fvflove
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-07-10 08:44:1910楼 得分:0
    我是来结分的,
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Zezese
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-10 17:44:3811楼 得分:0
    子类化一下 应该可以的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jy497759649
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-10 18:04:0112楼 得分:0
    我子类化不懂的,请指教
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zym0017d
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-24 01:28:4413楼 得分:0
    BorderStyle=0 - None

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yinweihong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-24 21:48:3914楼 得分:0
    当去除窗口标题栏后,点击系统菜单的移动菜单项后  你还能点到系统菜单,,,,????
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • WuYunpeng
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-25 00:14:2515楼 得分:0
    Option Explicit
    '移动窗口
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Declare Function ReleaseCapture Lib "user32" () As Long '为当前的应用程序释放鼠标捕获

    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ReleaseCapture
    SendMessage Me.hWnd, &HA1, 2, 0&
    End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Tiger_Zhao
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 4

      3

      2

    发表于:2008-07-25 09:25:5716楼 得分:0
    在任务栏的对应按钮点右键,弹出的所谓“系统菜单”,Axialis IconWorkshop 与其它窗体弹出的菜单风格是不一样的,这是它自制的菜单,当然与标准菜单的表现不一致。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jy497759649
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-07 15:41:2217楼 得分:0
    那如何实现呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhyzhsh
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-08 15:09:0618楼 得分:0
    这估计要问微软为什么当初这么设计。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved