1. 发现这个控件有个特点,就是当OnMouseMove()函数里面调用了TrackMouseEvent()激活鼠标跟踪的时候,它会有hot selection特性,也就是鼠标放在某个元素上一定时间后,鼠标所指的元素就会被选择。
2. 这是个非常恼人的特性,我尝试去掉,在CListCtrlX的构造函数,Create(Ex)函数,OnCreate函数,PreSubclassWindow函数里面都去调用了SetExtendedStyle尝试去掉LVS_EX_TRACKSELECT风格,结果发现都不行。
3. 最后我在ON_NOTIFY_REFLECT(NM_HOVER,OnNMHover)里面,在OnNMHover函数的最后面把
*pResult=0
改成
*pResult=TRUE
这样才防止了TrackMouseEvent时候的,产生TRACK SELECT特性。
可是这到底是为什么呢,我希望的是某个地方去掉用SetExtendedStyle就可以了啊? 谢谢!
5 个解决方案
#1
#2
控件的这种pResult最后将作为窗口过程的返回值,每个消息的返回值意义不同,WM_MOUSEHOVER这个消息里这样说的
If an application processes this message, it should return zero
你研究看看?
If an application processes this message, it should return zero
你研究看看?
#3
好像没有回答我的问题啊... ...
#4
这个问题上次好像看到过了,是不是你发的?
#5
看错了,原来是NM_HOVER,我的意思是,既然你修改了lpResult的值就行了,那就看看通知消息返回值的意义,这个lpResult就是作为返回值
NM_HOVER
返回值意思
Unless otherwise specified, return zero to allow the control to process the hover normally, or nonzero to prevent the hover from being processed.
#1
#2
控件的这种pResult最后将作为窗口过程的返回值,每个消息的返回值意义不同,WM_MOUSEHOVER这个消息里这样说的
If an application processes this message, it should return zero
你研究看看?
If an application processes this message, it should return zero
你研究看看?
#3
好像没有回答我的问题啊... ...
#4
这个问题上次好像看到过了,是不是你发的?
#5
看错了,原来是NM_HOVER,我的意思是,既然你修改了lpResult的值就行了,那就看看通知消息返回值的意义,这个lpResult就是作为返回值
NM_HOVER
返回值意思
Unless otherwise specified, return zero to allow the control to process the hover normally, or nonzero to prevent the hover from being processed.