プロが教える店舗&オフィスのセキュリティ対策術

下記コードですが、カーソル行以外の行は色が変更されるのですが、カーソル行は変わりません。
カーソル行の色を変えたいのですが教えてください。

if ( ((LPNMHDR)lp)->code == NM_CUSTOMDRAW ) {

case NM_CUSTOMDRAW:
LPNMLVCUSTOMDRAW lplvcd;
int row;
lplvcd = (LPNMLVCUSTOMDRAW)lp;
switch (lplvcd->nmcd.dwDrawStage) {
case CDDS_PREPAINT:
return CDRF_NOTIFYITEMDRAW;
case CDDS_ITEMPREPAINT:
row = lplvcd->nmcd.dwItemSpec;
if (ListView_GetItemState(hList, row, LVIS_SELECTED)) {
lplvcd->dwItemType = LVCDI_GROUP;
lplvcd->clrTextBk = RGB(0, 0, 255);
lplvcd->clrText = RGB(255, 255, 255);
return CDRF_NEWFONT;
}
break;
default :
break;
}
break;
}

A 回答 (2件)

>カーソル行は変わりません。



選択行…ですか?
http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vcln …

ところで…
>if (ListView_GetItemState(hList, row, LVIS_SELECTED))
が偽だった場合にreturn無しでいいんですかね?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

ご提示のURLはMFCでした、私にはMFCは解りません。

>>if (ListView_GetItemState(hList, row, LVIS_SELECTED))
>が偽だった場合にreturn無しでいいんですかね?
これは

break;
がありますが、これとは別にreturnは何処にいれるのでしょうか、
教えてください。

お礼日時:2018/06/11 13:58

MFCかどうか…ってことではなく……


『確か、選択色はカスタムドロウでは変更できないと言う話だったような。』という部分が。
# ただし、私自身は確認していない。
ここしばらくWin32API触っていないし。
# むか~しのソース見たらListView_SetBkColor()とListView_SetTextBkColor()でいぢっているものがあるなぁ…


>がありますが、これとは別にreturnは何処にいれるのでしょうか、

if文の後にelseでreturnを…でしょうか。
CDRF_NEWFONTかCDRF_NOTIFYSUBITEMDRAWを返却するようですが。
# breakで抜けるだけだと、おそらくはDefWindowProc()で処理されるでしょうけども。
    • good
    • 0
この回答へのお礼

ありがとうございます。
>ListView_SetBkColor()とListView_SetTextBkColor()・・・
はマクロでしょうか?
この線で攻めてみます。

偽については、お行儀よくreturnで抜けます。
ありがとうございました。

お礼日時:2018/06/11 14:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!