VB6中如何实现 鼠标双击标题栏什么也不作?谢谢!

blueer 2002-04-24 03:49:12
如上
...全文
128 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyu1221 2002-04-25
  • 打赏
  • 举报
回复
''---------------------以下代码必须放在模块中---------------------
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 CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const GWL_WNDPROC = (-4)
Private Const WM_NCLBUTTONDBLCLK = &HA3

Private m_lpPrevWndProc As Long



Public g_hWnd As Long


Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg <> WM_NCLBUTTONDBLCLK Then
WindowProc = CallWindowProc(m_lpPrevWndProc, hwnd, uMsg, wParam, lParam)
End If
End Function

Public Function Hook() As Boolean
Hook = True
If g_hWnd = 0 Then
Hook = False
Exit Function
End If
m_lpPrevWndProc = SetWindowLong(g_hWnd, GWL_WNDPROC, AddressOf WindowProc)
End Function

Public Function UnHook() As Boolean
Call SetWindowLong(g_hWnd, GWL_WNDPROC, m_lpPrevWndProc)
End Function

'----------模块代码结束------------------------------

'使用方法
'1.设置g_hWnd变量为需要的窗口句柄
'如:g_hWnd = Me.hwnd
'2.调用函数Hook就可以实现你需要的功能,调用函数UnHook就可以去掉该功能

'-------------此代码在VB6。0的调试状态,NATIVE CODE状态,P-CODE状态-都可以运行-------测试通过!!!--------
printer 2002-04-25
  • 打赏
  • 举报
回复
同意sonicdater(发呆呆)的说法.
警告:注意危险性,如果重载窗口函数,很容易让你的程序死掉,记着设置为自动存盘.
tnt_tnt 2002-04-25
  • 打赏
  • 举报
回复
可以把这个窗口的句柄屏蔽了
这样就从根本上解决了问题!
blueer 2002-04-25
  • 打赏
  • 举报
回复
To 288794:
请继续指点菜鸟Blueer,谢谢
288794 2002-04-25
  • 打赏
  • 举报
回复
拦截“WM_NCLBUTTONDBLCLK”消息!!!
根据 wparam 和 lparam 来判断点击的项目。
blueer 2002-04-25
  • 打赏
  • 举报
回复
To 发呆呆&打印机:
能否详细一些?谢谢
wqb 2002-04-25
  • 打赏
  • 举报
回复
gz
fadestarfish 2002-04-25
  • 打赏
  • 举报
回复
把最大化按钮设成不可用就行了吧!
zyl910 2002-04-25
  • 打赏
  • 举报
回复
拦截“WM_NCLBUTTONDBLCLK”消息!!!
tg123 2002-04-25
  • 打赏
  • 举报
回复
这个不可能
因为鼠标双击标题栏和最大化,最小化按钮
产生的是同一条消息
daryl715 2002-04-24
  • 打赏
  • 举报
回复
可以隐藏标题栏
sonicdater 2002-04-24
  • 打赏
  • 举报
回复
用 Subclass , 拦截 鼠标的 WM_LBUTTONDOWN,WM_LBUTTONUP 之类的消息.
blueer 2002-04-24
  • 打赏
  • 举报
回复
up
blueer 2002-04-24
  • 打赏
  • 举报
回复
to 阿甘:
我想允许通过最大化,最小化按钮或拖动钮调整窗口大小,但不响应标题栏的双击。ActiveSkin控件破解后存在双击标题栏非法操作的问题,如有好用的ActiveSkin破解版亦可,谢谢!
gump2000 2002-04-24
  • 打赏
  • 举报
回复
设计时候boardstyle=1就可以了啊。
blueer 2002-04-24
  • 打赏
  • 举报
回复
大家来讨论讨论
基于VB6自主研发的轻量级数据库查询客户端工具,启动速度较快,所占资源较小。 附源码,对初学数据库编程的童鞋有所裨益! 1、支持SQLServer、Oracle、Sybase、DB2数据库平台 2、单句执行:可以提交单一的SQL语句给服务器执行。 3、多句一次执行:可以将多个SQL语句用空格或换行的方式进行隔离,程序会一次性提交给数据库服务器执行。(前提条件是语法通过) 4、多句依次执行:可以将多个SQL语句用分号‘;’隔开,程序会逐句提交。 5、执行指定的SQL语句:可以在SQL编辑框部分语句执行,在SQL命令框通过鼠标连续单击3次可以选择当前行。 6、在事务执行SQL语句:将执行按钮上方的Trans 框选,那么程序对于每次提交的SQL语句都是放在事务执行的,执行不成功程序会进行回滚操作。程序默认不进行事务处理,因为有些语句不能在事务执行。 版本修订记录: V3.6.0 16:08 2012/6/18 --支持DB2数据库平台,要求客户端安装 DB2 Run-Time Client Lite。 --支持数据库名的记忆功能。 V3.5.11 14:36 2012-5-12 --支持连接非缺省端口号的SQL Server平台。 V3.5.10 8:54 2009/12/22 --将OUT标签更名为Output。 V3.5.9 10:48 2009/8/19 --修订Bug:在Vista或Win7系统下主界面部分被遮盖显示不全的问题。 V3.5.8 --修订Bug:执行的存储过程没有返回结果集,在导出Excel时出现运行时错误。 V3.5.7 --界面标题栏增加当前连接数据库信息。 --修订死循环Bug,死3次后退出执行。 --修订最末语句分号后面跟若干回车符执行死循环的Bug。 V3.5.6 --还是使用TextBox控件作为SQL命令的输入框,RichTextBox控件的滚动条功能不太好用; --使用字符算法实现双击SQL命令框选当前行的功能(TextBox控件本身不支持)。 --修订了窗体在Resize时的Bug。 V3.5.5 --使用RichTextBox控件代替原有的TextBox控件SQL命令输入框(支持双击整行功能)。 --使用‘;’和‘回车换行’符号联合作为SQL命令逐个提交的分割标志符。 V3.5.4 --修订SQL日志文件记录错误的Bug。 V3.5.3 --修订系统未安装任何打印机的情况下导出Excel失败的Bug(设置打印页面横向时失败)。 V3.5.2 --修订运行目录没有可写权限导致记录日志失败无法提交SQL语句的Bug。 V3.5.0 --新增记录SQL语句日志的功能。 V3.4.0 --新增导出查询结果集到Excel文档的功能。 V3.3.4 --修改了窗体内部控件自动放缩的控制算法; --修改数据显示窗口支持滚轮鼠标的上下左右翻滚操作。 V3.3.0 --修改了连接ORACLE的连接字符串,要求客户端安装ODAC组件(OLEDB); --数据库下拉列表默认上次选择的数据项。 V2.0.0 --支持Sybase平台,要求客户端安装Sybase OLEDB组件; V1.0.0 --支持SQL Server平台,安装包自带ADO组件。

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧