Windows - Получить HWND из TreeView для GetScrollInfo? - PullRequest
0 голосов
/ 15 ноября 2018

Я новичок в программировании 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?

Кто-нибудь знает, как это сделать?это должно быть очень просто, но я не могу найти ответ.

1 Ответ

0 голосов
/ 16 ноября 2018

Согласно документации Control.Handle:

IntPtr, содержащий дескриптор окна (HWND) элемента управления.

...

Значением свойства Handle является Windows HWND. Если дескриптор еще не создан, ссылка на это свойство приведет к созданию дескриптора.

Так что да, вы можете просто привести IntPtr к HWND, например:

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

или

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