掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ListViewのカスタム描画で選択色を変更するには? (ID:88737)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ひろ さん アドバイスありがとう。次の機会に検討したいと思います。 で、選択範囲をアイテムのラベル範囲にできませんでしたが、アイテム矩形の範囲にはできました。今回は、これで妥協したいと思います。 以下が、その追加・修正コードです。 Private Const CDDS_SUBITEM As Long = &H20000 Private Declare Function OleTranslateColor Lib "oleaut32" _ (ByVal clr As Long, ByVal hpal As Long, pcolorref As Long) As Long Private Function WindowProc(ByVal hWnd As Long, _ ByVal uMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long Select Case uMsg Case WM_NOTIFY Static bHighlighted As Boolean Static iRow As Long Dim p As NMHDR Call MoveMemory(p, ByVal lParam, Len(p)) Select Case (p.code) Case NM_CUSTOMDRAW Dim lvcd As NMLVCUSTOMDRAW Call MoveMemory(lvcd, ByVal lParam, Len(lvcd)) Select Case (lvcd.nmcd.dwDrawStage) Case CDDS_PREPAINT WindowProc = CDRF_NOTIFYITEMDRAW Exit Function Case CDDS_ITEMPREPAINT iRow = lvcd.nmcd.dwItemSpec bHighlighted = IsRowHighlighted(p.hwndFrom, iRow) If (bHighlighted) Then Call EnableHighlighting(p.hwndFrom, iRow, False) End If WindowProc = CDRF_NOTIFYSUBITEMDRAW Exit Function Case (CDDS_ITEMPREPAINT Or CDDS_SUBITEM) If (bHighlighted) And (lvcd.iSubItem = 0) Then lvcd.clrText = vbWhite lvcd.clrTextBk = vbRed Call EnableHighlighting(p.hwndFrom, iRow, True) Else lvcd.clrText = ToCOLOEREF(vbWindowText) lvcd.clrTextBk = ToCOLOEREF(vbWindowBackground) End If Call MoveMemory(ByVal lParam, lvcd, Len(lvcd)) WindowProc = CDRF_DODEFAULT Exit Function Case Else WindowProc = CDRF_DODEFAULT Exit Function End Select End Select End Select WindowProc = CallWindowProc(m_lpOldWndProc, hWnd, uMsg, wParam, lParam) End Function Private Function ToCOLOEREF(ByVal clr As OLE_COLOR) As Long Call OleTranslateColor(clr, 0, ToCOLOEREF) End Function
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.