Что нового

Стиль окна $WS_EX_TOPMOST не дает работать стилю $LVS_EX_INFOTIP для ListView.

asdf8

Скриптер
Сообщения
564
Репутация
152
Код:
$GUI = GUICreate('ListView $LVS_EX_INFOTIP', 400, 300, -1, -1, -1, $WS_EX_TOPMOST)
$ListView = GUICtrlCreateListView("Test", 2, 2, 394, 268, BitOR($LVS_SINGLESEL,$GUI_SS_DEFAULT_LISTVIEW, $LVS_NOSORTHEADER), BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_INFOTIP))
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)
For $i = 1 To 10
	GUICtrlCreateListViewItem('Row ' & $i & ': Col 1 ', $ListView)
Next
GUISetState()

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE


Есть у кого идеи, как это можно исправить или обойти?
 

AZJIO

Меценат
Меценат
Сообщения
2,892
Репутация
1,196
asdf8
Может теперь это окно стало выше окна всплывающей подсказки? Иного не могу представить, WinSetOnTop тоже не помогает. Для ListView добавил $WS_EX_TOPMOST, добавилось только автовыделение пунктов.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,673
Репутация
2,485
Можно попробовать так обойти:

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>

$hGUI = GUICreate('ListView $LVS_EX_INFOTIP', 400, 300, -1, -1, -1, $WS_EX_TOPMOST)
$iListView = GUICtrlCreateListView("Test", 2, 2, 394, 268, BitOR($LVS_SINGLESEL, $GUI_SS_DEFAULT_LISTVIEW, $LVS_NOSORTHEADER), BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_INFOTIP))
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 50)

For $i = 1 To 10
	GUICtrlCreateListViewItem('Row ' & $i & ': Col 1 ', $iListView)
Next

GUISetState()

_SetToolTipsOnTop()

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

Func _SetToolTipsOnTop()
	Local $aTips = WinList('[CLASS:tooltips_class32]')
	
	For $i = 1 To $aTips[0][0]
		If WinGetProcess($aTips[$i][1]) = @AutoItPID Then
			WinSetOnTop($aTips[$i][1], '', 1)
		EndIf
	Next
EndFunc
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
CreatoR

Очень подходящее решение.

ps: проверил - для TreeView tooltips уже имеет атрибут $WS_EX_TOPMOST, а с ListView похоже накосячили.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Лучше так:

Код:
WinSetOnTop(_GUICtrlListView_GetToolTips($ListView), '', 1)
 
Верх