首页 > 解决方案 > Windows - 从 TreeView 获取 HWND 以获取 GetScrollInfo?

问题描述

我是 Windows 编程新手,并试图获取 TreeView 滚动条的位置。

SCROLLINFO scrollInfo;
ZeroMemory(&scrollInfo, sizeof(scrollInfo));
scrollInfo.cbSize = sizeof(scrollInfo);
scrollInfo.fMask = SIF_TRACKPOS;
tbool gotScrollInfo = GetScrollInfo(poTreeView->Handle, SB_VERT, &scrollInfo);

我收到一个错误:

'BOOL GetScrollInfo(HWND,int,LPSCROLLINFO)': cannot convert argument 1 from 'System::IntPtr' to 'HWND'.

我在网上查看过,找不到如何从 TreeView 指针到HWND. Windows 的文档假定您已经拥有 HWND。

TreeView.hwnd我见过人们使用或TreeView.Handle转换为的其他地方IntPtr- 我猜这个函数用来代替HWND?

有谁知道如何做到这一点?这应该非常简单,但我找不到答案。

标签: .netwinapitreeviewhwnd

解决方案


根据Control.Handle文档:

包含控件的窗口句柄 (HWND) 的 IntPtr。

...

Handle 属性的值是 Windows HWND。如果尚未创建句柄,则引用此属性将强制创建句柄。

所以是的,您可以简单地将 类型IntPtr转换为HWND,例如:

(HWND)(poTreeView->Handle.ToPointer())

或者

static_cast<HWND>(poTreeView->Handle.ToPointer())

推荐阅读