winapi - Win32 TreeView 选择后

标签 winapi visual-c++

快速问题...

我正在 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/

相关文章:

c++ - 使用静态版本的 boost::filesystem 时出现有趣的 LNK1104 错误

c++ - 实现递归冒泡排序时遇到栈溢出

c++ - 在 Windows 7 上用 C++ 接收 sleep 通知的最简单方法

c# - 帮助使用 SystemParametersInfo

perl - 从 CPAN 安装模块时无法识别 dmake 命令

windows - 如何在 Win32 中自定义选项卡控件的外观?

c++ - 无法正确输出文件

c - 在 Windows 中临时捕获控制台应用程序的标准输出

qt - 从另一个 IDE (Qt Creator) 设置 MSVC 编译器的字符集

.net - 如何多次使用 ConsoleCancelEventHandler