kk_lee69 发表于 2017-9-1 02:03:35

如何 确认 LISTVIEW 是否含有$LVS_SINGLESEL 的风格??[已解决]

本帖最后由 kk_lee69 于 2017-9-1 10:14 编辑

如何 确认 LISTVIEW 是否含有$LVS_SINGLESEL 的风格??

_GUICtrlListView_GetExtendedListViewStyle 似乎 只能找出 Extended 的

不能找出 $LVS_SINGLESEL

有人有办法吗??

yamakawa 发表于 2017-9-1 08:43:22

这个么#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <WinAPI.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 437, 192, 124)
$listview = GUICtrlCreateListView("1|2|3", 10, 10, 500, 200)
$hlistview = GUICtrlGetHandle(-1)
Local $idItem1 = GUICtrlCreateListViewItem("item2|col22|col23", $listview)
Local $idItem2 = GUICtrlCreateListViewItem("item1|col12|col13", $listview)
Local $idItem3 = GUICtrlCreateListViewItem("item3|col32|col33", $listview)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Local $style = _WinAPI_GetWindowLong($hlistview, $GWL_STYLE)

If BitAND($style, $LVS_REPORT) = $LVS_REPORT Then ConsoleWrite("$LVS_REPORT 控件为报表视图" & @CRLF) ;0x0001 控件为报表视图.
If BitAND($style, $LVS_SMALLICON) = $LVS_SMALLICON Then ConsoleWrite("$LVS_SMALLICON 控件为小图标视图" & @CRLF) ;0x0002 控件为小图标视图.
If BitAND($style, $LVS_LIST) = $LVS_LIST Then ConsoleWrite("$LVS_LIST 控件为列表视图" & @CRLF) ;0x0003 控件为列表视图.
If BitAND($style, $LVS_EDITLABELS) = $LVS_EDITLABELS Then ConsoleWrite("$LVS_EDITLABELS 项目文字可以就地编辑." & @CRLF) ;0x0200 项目文字可以就地编辑.
If BitAND($style, $LVS_NOCOLUMNHEADER) = $LVS_NOCOLUMNHEADER Then ConsoleWrite("$LVS_NOCOLUMNHEADER 报表视图不显示列标题. 默认报表视图显示列标题." & @CRLF) ;0x4000 报表视图不显示列标题. 默认报表视图显示列标题.
If BitAND($style, $LVS_NOSORTHEADER) = $LVS_NOSORTHEADER Then ConsoleWrite("$LVS_NOSORTHEADER 列标题不工作于按钮状态, 用于要求单击列标题不执行任何操作的情况中." & @CRLF) ; 0x8000 列标题不工作于按钮状态, 用于要求单击列标题不执行任何操作的情况中.
If BitAND($style, $LVS_SINGLESEL) = $LVS_SINGLESEL Then ConsoleWrite("$LVS_SINGLESEL 同一时间内只有一个项目可以选择." & @CRLF) ; 0x0004 同一时间内只有一个项目可以选择.
If BitAND($style, $LVS_SHOWSELALWAYS) = $LVS_SHOWSELALWAYS Then ConsoleWrite("$LVS_SHOWSELALWAYS 如果存在选择项, 即使控件没有焦点也始终显示" & @CRLF) ;0x0008 如果存在选择项, 即使控件没有焦点也始终显示.
If BitAND($style, $LVS_SORTASCENDING) = $LVS_SORTASCENDING Then ConsoleWrite("$LVS_SORTASCENDING 按项目文本升序排序" & @CRLF) ; 0x0010 按项目文本升序排序.
If BitAND($style, $LVS_SORTDESCENDING) = $LVS_SORTDESCENDING Then ConsoleWrite("$LVS_SORTDESCENDING 按项目文本降序排序" & @CRLF) ; 0x0020 按项目文本降序排序.
If BitAND($style, $LVS_NOLABELWRAP) = $LVS_NOLABELWRAP Then ConsoleWrite("$LVS_NOLABELWRAP 图标视图中项目文本单行显示. 默认图标视图的项目文本可能会换行." & @CRLF) ;0x0080 图标视图中项目文本单行显示. 默认图标视图的项目文本可能会换行.

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

        EndSwitch
WEnd

kk_lee69 发表于 2017-9-1 09:48:53

回复 2# yamakawa

對就是他去哪找的??
   
_WinAPI_GetWindowLong 的範例嗎??

yamakawa 发表于 2017-9-1 11:32:07

回复 3# kk_lee69


    {:face (394):}自己写的啊。
页: [1]
查看完整版本: 如何 确认 LISTVIEW 是否含有$LVS_SINGLESEL 的风格??[已解决]