当然,我知道 控件本身有 Expand 事件的,
我只是想问下,如何用自己的SubClass捕捉并分离出TVN_ItemExpanding消息?假设 m_hWnd=From1.TreeView1.hWnd偶试了下:在Function SubClass (uMsg,hWnd,wParam,lParam) 里
Dim uHDR As NMHDR, uNmTV As NMTREEVIEW此时的uHDR.hWndFrom 总是不等于 m_hWnd (idFrom 等于 m_hWnd)
不知为何?难道一定要自建的控件才行吗?
所以,下面的过程总是捉不到事件,诶Select Case uMsg
Case WM_NOTIFY
CopyMemory uHDR, ByVal lParam, Len(uHDR)
If uHDR.hWndFrom <> m_hWnd Then
Exit Sub
End If
Select Case uHDR.Code
Case TVN_ItemExpanding
CopyMemory uNmTV, ByVal lParam, LenB(uNmTV)
我只是想问下,如何用自己的SubClass捕捉并分离出TVN_ItemExpanding消息?假设 m_hWnd=From1.TreeView1.hWnd偶试了下:在Function SubClass (uMsg,hWnd,wParam,lParam) 里
Dim uHDR As NMHDR, uNmTV As NMTREEVIEW此时的uHDR.hWndFrom 总是不等于 m_hWnd (idFrom 等于 m_hWnd)
不知为何?难道一定要自建的控件才行吗?
所以,下面的过程总是捉不到事件,诶Select Case uMsg
Case WM_NOTIFY
CopyMemory uHDR, ByVal lParam, Len(uHDR)
If uHDR.hWndFrom <> m_hWnd Then
Exit Sub
End If
Select Case uHDR.Code
Case TVN_ItemExpanding
CopyMemory uNmTV, ByVal lParam, LenB(uNmTV)
不知为何?难道一定要自建的控件才行吗?没这么一说你把代码贴全另外,这里有完整的代码:
http://www.vb-helper.com/HowTo/howto_treeview_expanding_collapsing.zip
你可以对比一下
会不会是处理子类的代码有误?其它顶级消息好像正常啊(如MouseMove等)
老大能否帮忙看看,或者能否推荐一种更好的SubClass方法?(偶希望安全性高一点,不要动不动就被Kill了,还有能适合建立多个SubClass的)vOpcode = Array(&H83EC8B55, &HE860F0C4, &H0, &HCEB815B, &H33004010, &HF84589C0, _
&H8BFC4589, &H4011A08B, &HFC98500, &H9684, &HFFF98300, &HBB8B1174, _
&H40119C, &HF20C458B, &H80850FAF, &H83000000, &H4011B0BB, &H36740000, _
&H11B093FF, &HF8830040, &HC72B7502, &H1F845, &H63EB0000, &H1E75C085, _
&H1194B3FF, &HFC6A0040, &H1190B3FF, &H93FF0040, &H4011AC, &H119883C7, _
&H40, &H938B0000, &H401198, &H3774D285, &HC085028B, &H253174, _
&H75800000, &H458D532A, &H458D5014, &H458D5010, &H458D500C, &H458D5008, _
&H458D50FC, &H8B5250F8, &H2050FF02, &HF87D835B, &H8B850F00, &H53000000, _
&HFF1475FF, &H75FF1075, &H875FF0C, &H1194B3FF, &H93FF0040, &H4011A8, _
&HFC45895B, &HF87D83, &H8B8B6875, &H4011A4, &H5E74C985, &H74FFF983, _
&H9CBB8B16, &H8B004011, &H4011A083, &H873C8D00, &HF20C458B, &H834375AF, _
&H4011B0BB, &HB740000, &H11B093FF, &HF8830040, &H8B2F7402, &H40119893, _
&H74D28500, &H85028B25, &H251F74C0, &H80000000, &HFF531875, &H75FF1475, _
&HC75FF10, &H8D0875FF, &H5250FC45, &H50FF028B, &H7D815B1C, &H820C, _
&HC7357500, &H40119083, &H0, &H838D00, &H50004010, &HB3FF006A, _
&H4011B8, &H50F0458D, &H1188838B, &H45890040, &H8C838BF0, &H89004011, _
&HA3FFF445, &H4011B4, &HFC458B61, &H10C2C9)
'*************************************************************************
'**模 块 名:CSubclass
'**说 明:Sky Walker(天行者) 版权所有2006 - 2007(C)
'** :Portions copyright (c) 2002 by Paul Caton <[email protected]>
'** :Portions copyright (c) 2002 by Vlad Vissoultchev <[email protected]>
'**创 建 人:WQW Implementation based on the original cSuperClass.cls
'**日 期:2002-09-28
'**修 改 人:叶帆
'**日 期:
'**描 述:子类化
'**版 本:V1.0.0
'*************************************************************************只有这个部分偶实在看不懂,只能拿来用了,希望老大能推荐一个更好的办法,谢谢!
(偶喜欢封装性强一点的,除了申明常数以外,希望代码都以源码形式存在,这样也方便修改,
所以最讨厌SSubTmr.Dll的形式了,既要注册,也要引用外部TLB,直接运行时还常常因为版本的问题出错,偶从vbaccelerator下的东东,几乎没有一个Exe能正常运行的,只能看看代码了)