快速问题...
我正在 win32 (VC++) 中使用 TreeView 。
我想删除为 TreeView 提供的选择工具。谁能告诉 TreeView 的 onAfterSelect 事件上发布了什么窗口消息。
电视也有复选框。所以禁用鼠标点击不是一个选项...
提前致谢...
- 瓦伦
更多信息 我被困在另一个点上。我的 win32 应用程序本质上是一个无模式对话框 - 使用 CreateDialog 和 ShowWindow。获得 TVN_SELCHANGING 后,当我返回 1 时,它不起作用。我认为在绕过 Windows 消息之前默认的 wndproc 被调用。我现在应该做什么?
最佳答案
我遇到了这个问题,并且在选择已经发生后就撤回了选择。无论如何,如果您没有对此使用react,那么就不应该有任何副作用。
case WM_NOTIFY:
{
if(wParam == IDC_TREE_MC)
{
LPNMHDR lpnmh = (LPNMHDR) lParam;
TVHITTESTINFO ht = {0};
if ((lpnmh->code == NM_CLICK) && (lpnmh->idFrom == IDC_TREE_MC)) // For Treeview Check Box Check Event
{
DWORD dwpos = GetMessagePos();
ht.pt.x = GET_X_LPARAM(dwpos);
ht.pt.y = GET_Y_LPARAM(dwpos);
MapWindowPoints(HWND_DESKTOP, lpnmh->hwndFrom, &ht.pt, 1);
TreeView_HitTest(lpnmh->hwndFrom, &ht);
if(TVHT_ONITEMSTATEICON & ht.flags)
PostMessage(hDlg, UM_CHECKSTATECHANGE, (WPARAM)lpnmh->hwndFrom, (LPARAM)ht.hItem);
else
TreeView_SelectItem(lpnmh->hwndFrom, NULL);
}
else if ((lpnmh->code == TVN_SELCHANGED ) && (lpnmh->idFrom == IDC_TREE_MC))
TreeView_SelectNode(lpnmh->hwndFrom, NULL);
}
break;
}
关于winapi - Win32 TreeView 选择后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14197459/