找回密码
 加入
搜索
查看: 4436|回复: 7

[AU3基础] listview修改整行颜色

  [复制链接]
发表于 2011-3-31 02:25:07 | 显示全部楼层 |阅读模式
本帖最后由 gfuchao 于 2011-3-31 02:40 编辑


怎么修改整行的颜色.?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-3-31 08:03:27 | 显示全部楼层


是这样的吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-3-31 13:07:58 | 显示全部楼层
楼上的这个很酷哦   设计得不错
发表于 2011-3-31 14:07:09 | 显示全部楼层
请教二楼你获取到的密码能写入到注册表?
 楼主| 发表于 2011-3-31 15:27:15 | 显示全部楼层
是这样的吗?
lxz 发表于 2011-3-31 08:03



不是,你这是listview背景颜色

我说整行颜色
发表于 2011-3-31 17:05:15 | 显示全部楼层
请教二楼你获取到的密码能写入到注册表?
lizhou 发表于 2011-3-31 14:07



    不是写入到注册表,是复制和粘贴.
发表于 2011-3-31 18:21:02 | 显示全部楼层
回覆 5# gfuchao

这样吗?
   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-3-31 19:15:54 | 显示全部楼层
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <FontConstants.au3>
#include <WinAPI.au3>

Global Const $CDDS_SUBITEMPREPAINT = BitOR($CDDS_ITEM, $CDDS_SUBITEM, $CDDS_PREPAINT)

Global $Font1 = _WinAPI_CreateFont(14, 0, 0, 0, $FW_BOLD)
Global $Font2 = _WinAPI_CreateFont(14, 0, 0, 0, $FW_NORMAL, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, _
                                   $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, "MS Sans Serif")

$hGUI = GUICreate("Test", 300, 200)

$hListView = _GUICtrlListView_Create($hGUI, "Items|SubItems|", 10, 10, 280, 180, $LVS_REPORT, $WS_EX_CLIENTEDGE)

_GUICtrlListView_SetExtendedListViewStyle($hListView, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_INFOTIP))

For $i = 1 To 10
    _GUICtrlListView_AddItem($hListView, "Item" & $i)
    _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem" & $i, 1)
    _GUICtrlListView_AddSubItem($hListView, $i - 1, "SubItem" & $i, 2)
Next

GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

GUISetState()

Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE

_WinAPI_DeleteObject($Font1)
_WinAPI_DeleteObject($Font2)

Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
    Local $tNMHDR, $hWndFrom, $iCode
    
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    
    Switch $hWndFrom
        Case $hListView
            Switch $iCode
                Case $NM_CUSTOMDRAW
                    Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
                    
                    Local $iDrawStage = DllStructGetData($tCustDraw, "dwDrawStage")
                    
                    If $iDrawStage = $CDDS_PREPAINT Then Return $CDRF_NOTIFYITEMDRAW
                    If $iDrawStage = $CDDS_ITEMPREPAINT Then Return $CDRF_NOTIFYSUBITEMDRAW
                    
                    Local $iSubItem = DllStructGetData($tCustDraw, "iSubItem")
                    
                    Local $iItem = DllStructGetData($tCustDraw, "dwItemSpec")
                    
                    Local $iColor, $hDC
                    
                    Switch $iItem
                        Case 5
                            $hDC = DllStructGetData($tCustDraw, "hdc")
                            
                            If $iSubItem = 0 Then
                                $iColor = RGB2BGR(0xFF0000)
                                _WinAPI_SelectObject($hDC, $Font1)
                                DllStructSetData($tCustDraw, "clrText", $iColor)
                            ElseIf $iSubItem = 1 Then
                                $iColor = RGB2BGR(0x000000)
                                _WinAPI_SelectObject($hDC, $Font2)
                                DllStructSetData($tCustDraw, "clrText", $iColor)
                                DllStructSetData($tCustDraw, "clrTextBk", RGB2BGR(0xFFFF80))
                            ElseIf $iSubItem = 2 Then
                                $iColor = RGB2BGR(0x008080)
                                _WinAPI_SelectObject($hDC, $Font1)
                                DllStructSetData($tCustDraw, "clrText", $iColor)
                                DllStructSetData($tCustDraw, "clrTextBk", RGB2BGR(0xFFFFFF))
                            EndIf
                            Return $CDRF_NEWFONT
                    EndSwitch
            EndSwitch
    EndSwitch
    
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_NOTIFY

Func RGB2BGR($iColor)
    Return BitAND(BitShift(String(Binary($iColor)), 8), 0xFFFFFF)
EndFunc   ;==>RGB2BGR()

截获$NM_CUSTOMDRAW消息比较耗显卡和CPU,你看着办吧
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 10:40 , Processed in 0.087214 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表