SysTreeView32 通知消息的处理问题

PctGL 2012-03-10 12:33:56


Private Sub ctlMsgHook_GetWindowMessage(Result As Long, ByVal cHwnd As Long, ByVal Message As Long, ByVal wParam As Long, ByVal lParam As Long)

'// 这是树形列表控件的父窗口的子类化过程, 用于接收\处理 systreeview32 的通知消息

Dim tvHDR As NMTREEVIEW
Dim cHDR As NMHDR
Dim HandleOfRoot As Long
Dim tItem As TV_ITEM

Select Case Message
Case WM_NOTIFY
CopyMemory cHDR, ByVal lParam, Len(cHDR)

If cHDR.hwndFrom = PG.n_hWndTreeList Then
'/// PG.n_hWndTreeList = 树形列表的句柄

Select Case cHDR.code
Case NM_CLICK: Debug.Print "NM_CLICK", Timer
Case NM_DBLCLK: Debug.Print "NM_DBLCLK", Timer
Case NM_RCLICK: Debug.Print "NM_RCLICK", Timer

Case TVN_ITEMEXPANDED
'// 这是项目展开或收起的通知消息
'// 这里开始是问题重点 ■■■

CopyMemory tvHDR, ByVal lParam, Len(tvHDR)

'// 本次的 Copymemory 取的是 NMTREEVIEW 内容
'// 没有copymemory和以下的内容,这个代码没问题, 但我需要对这个通知消息响应
'// 加了copymemory, 展开的动作时没问题
'// 但是在收起的动作时, 程序崩溃...
'// 在调试时, 如果在copymemory下面有debug.print,能显示出读出了正确的消息
'// 但是立刻也就崩溃了, 错误原因不详, 应该是copymemory的问题, 没有下面的代码
'// 只有copymemory一样出错, so.... 现在不知道怎么办了...
'// 到底是怎么回事? 我这个通知消息响应过程错了了吗?
Select Case tvHDR.ItemNew.hItem
Case PG.n_FolderExeProject, PG.n_FolderDLLProject, PG.n_FolderVxdProject
Case Else

tItem.Mask = TVIF_HANDLE Or TVIF_IMAGE Or TVIF_SELECTEDIMAGE
tItem.hItem = tvHDR.ItemNew.hItem
If tvHDR.Actionz = 2 Then tItem.iImage = FolderOpen - 101& Else tItem.iImage = FolderClose - 101&
tItem.iSelectedImage = tItem.iImage
SendMessage PG.n_hWndTreeList, TVM_SETITEM, ByVal 0&, tItem

Debug.Print "TVN_ITEMEXPANDED", tvHDR.Actionz, tvHDR.ItemNew.hItem, PG.n_FolderExeProject, PG.n_FolderForm
End Select

Result = -1
Exit Sub

Case TVN_ITEMEXPANDING
Debug.Print "TVN_ITEMEXPANDING"


Case TVN_SINGLEEXPAND: Debug.Print "TVN_SINGLEEXPAND"

Case TVN_SELCHANGED: Debug.Print "TVN_SELCHANGED"

Case Else ': Debug.Print tvHDR.hDR.code, Timer
End Select
End If


Case WM_SYSCOMMAND
Result = 1: Exit Sub

End Select

Result = ctlMsgHook.CallDefaultWindowProc(cHwnd, Message, wParam, lParam)

End Sub



SysTreeView32 控件创建在自定义控件上;

如果觉得这个子类化代码不够形象, 内容少, 我可以上传这个控件的全部代码

实在没办法了, 太郁闷了... 先是被 CreateMappedBitmap 折腾了两天,

又被现在这个问题折腾的.......

有对这个问题了解的, 请不吝赐教....

...全文
120 点赞 收藏 回复
写回复
回复

还没有回复,快来抢沙发~

发动态
发帖子
API
创建于2007-09-28

1196

社区成员

2.3w+

社区内容

VB API
社区公告
暂无公告