标准ComboBox控件是没有鼠标事件的,如何在Style=2(只能从下拉列表中选择)模式下,
为其增加鼠标事件?(主要是想为其增加右键菜单功能。)一种办法,借助子类技术,拦截鼠标事件,但这样的代价就是,使调试变得异常困难,
因VB并不是专为子类设计的,自己拦截底层窗体消息,将失去VB最大优势——调试。另一种方法,把该控件禁用,由窗体的(或做成个控件)鼠标事件来触发(根据当前位置来判断)
但这样将失去ComboBox的交互功能,不太理想,而且那个样子还有一种方法,使用定时器+API,随时检测当前鼠标位置及按键信息,若处于该控件内,则触发事件。
但缺点是系统占用问题。希望大家讨论一下,是否还有其它的、较为折中的办法?既能解决系统占用问题(应该由系统消息触发,而不是用无谓的循环去查询)
又能不牺牲VB的调试优势,(若把VB的调试做成VFP6那样,算拉,还是去用C吧)
兼容性强(不能只依靠某个单独的第三方控件,若哪天他想起来要收费,那)
还有,能在VB5下用(主要为了编“绿色”软件)
为其增加鼠标事件?(主要是想为其增加右键菜单功能。)一种办法,借助子类技术,拦截鼠标事件,但这样的代价就是,使调试变得异常困难,
因VB并不是专为子类设计的,自己拦截底层窗体消息,将失去VB最大优势——调试。另一种方法,把该控件禁用,由窗体的(或做成个控件)鼠标事件来触发(根据当前位置来判断)
但这样将失去ComboBox的交互功能,不太理想,而且那个样子还有一种方法,使用定时器+API,随时检测当前鼠标位置及按键信息,若处于该控件内,则触发事件。
但缺点是系统占用问题。希望大家讨论一下,是否还有其它的、较为折中的办法?既能解决系统占用问题(应该由系统消息触发,而不是用无谓的循环去查询)
又能不牺牲VB的调试优势,(若把VB的调试做成VFP6那样,算拉,还是去用C吧)
兼容性强(不能只依靠某个单独的第三方控件,若哪天他想起来要收费,那)
还有,能在VB5下用(主要为了编“绿色”软件)
现在问题就是怎么做?找思路!难道做OCX就能自动的为ComboBox增加鼠标事件?(不用子类)
这是一个基本控件,如果OCX能做到,那VB源码凭什么做不到?不过,我更希望做成“绿色”软件(有点怀念Dos^-^),与版本密切相关的OCX控件总是一个危险,如果是动态链接库则安全的多(可惜VB诶)