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 折腾了两天,

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

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

...全文
212 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,488

社区成员

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

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