Как проверить расширенное состояние древовидного элемента управления с Win32 :: GuiTest? - PullRequest
0 голосов
/ 14 апреля 2011

В документации Win32 :: GuiTest Я могу найти только две функции для работы с древовидными элементами управления, GetTreeViewSelPath и SelTreeViewItemPath.Кто-нибудь может порекомендовать способ определения открытого / закрытого состояния узлов в дереве?

1 Ответ

0 голосов
/ 15 апреля 2011

Мой вид дерева на самом деле является "лесом" (куча деревьев).Я обнаружил, что могу пройти через корни с помощью:

my $i = 0;
my @states;
for (my $node = Win32::GuiTest::SendMessage($windows[0], 
                    0x1100 + 10, # Get next
                    0,           # root
                    0);          # N/A
 $node != 0;
 $node = Win32::GuiTest::SendMessage($windows[0], 
                     0x1100 + 10, # Get next
                     1,           # Sibling
                     $node)) {    # from current

my $state = Win32::GuiTest::SendMessage($windows[0], 0x1100 + 39,
                    $node, 0xff);
$states[$i] = $state;
$i++;
}

Я нашел константы (корень, брат и т. Д.) В http://www.xtremevbtalk.com/showthread.php?t=45515:

' messages
Public Const TV_FIRST = &H1100
Public Const TVM_GETNEXTITEM = (TV_FIRST + 10)
Public Const TVM_GETITEM = (TV_FIRST + 12)

' TVM_GETNEXTITEM wParam values
Public Enum TVGN_Flags
TVGN_ROOT = &H0
TVGN_NEXT = &H1
TVGN_PREVIOUS = &H2
TVGN_PARENT = &H3
TVGN_CHILD = &H4
TVGN_FIRSTVISIBLE = &H5
TVGN_NEXTVISIBLE = &H6
TVGN_PREVIOUSVISIBLE = &H7
TVGN_DROPHILITE = &H8
TVGN_CARET = &H9

Если бы у меня было нормальное дерево,Я мог бы сделать:

node = root
for (node = child; node != 0; node = sibling) {
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...