You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SHBrowseForFolder回调中如何让选中项滚动到树视图可见区域?

关于SHBrowseForFolder中自动滚动选中目录到可见区域的问题

我又来咨询SHBrowseForFolder相关问题了,感谢Charlieface之前的帮助,目前已经取得不少进展,但还差最后一步需要完善。

在BFFCALLBACK BrowseCallbackProc中选中目标项后,能否发送TVM_ENSUREVISIBLE消息,将选中条目滚动到树视图的可见区域?目前无法实现的原因是缺少选中条目的指针——也就是BFFM_SETSELECTIONW的返回结果。

我之前通过外部程序获取对话框窗口和树视图后,成功实现了将选中项移到可见区域,代码如下:

SendMessage(hwndTV, TVM_SELECTITEM, new IntPtr(TVGN_CARET), SelectItem); // 选中目录
SendMessage(hwndTV, TVM_ENSUREVISIBLE, IntPtr.Zero, SelectItem); // 将选中目录滚动到可见区域

请问只能通过这种外部程序的方式实现吗?

我尝试了以下代码,但无法正常工作:

if (msg == API32.BFFM_INITIALIZED)              // 对话框窗口初始化完成后...
{
    _ = API32.SendMessage(hwnd, API32.BFFM_SETSELECTIONW, 1, _selectedPath); // 选中对应路径的TreeView项
    IntPtr SelectItem = IntPtr.Zero;
    _ = API32.SendMessage(hwnd, API32.TVM_SELECTITEM, new IntPtr(API32.TVGN_CARET), SelectItem);   // 选中目标目录
    _ = API32.SendMessage(hwnd, API32.TVM_ENSUREVISIBLE, IntPtr.Zero, SelectItem);                 // 将目标目录滚动到可见区域
}

内容的提问来源于stack exchange,提问作者perlfred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:07:19