gpt4 book ai didi

c++ - 在 NMLVCUSTOMDRAW C++ 中获取列 ID

转载 作者:行者123 更新时间:2023-11-30 03:00:20 25 4
gpt4 key购买 nike

我需要获取要绘制的列 ID。这是我的一些代码我尝试获取项目 ID 和列 ID 以使用 ListView_GetItemText 并设置要绘制的项目的正确颜色。

switch( ((LPNMLVCUSTOMDRAW)lParam)->nmcd.dwDrawStage){
case CDDS_PREPAINT:
return CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
{
LPNMLVCUSTOMDRAW customDraw = (LPNMLVCUSTOMDRAW)lParam;
int itemid = (customDraw->nmcd).dwItemSpec //this is item id
//column id is missing
return CDRF_NEWFONT;
break;
}
default: return CDRF_DODEFAULT;
}

最佳答案

如果你包含

case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
int iSubItem = ((LPNMLVCUSTOMDRAW)lParam)->iSubItem;
break;

这将为您提供专栏。之所以没有发生这种情况,是因为您必须通过函数头中传递的 LRESULT 指针返回您希望在未来接收的通知,例如

如果你的函数头看起来像:

::OnNMCustomdraw(NMHDR* pNMHDR, LRESULT* pResult)

你需要:

*pResult |= CDRF_NOTIFYITEMDRAW;
*pResult |= CDRF_NOTIFYSUBITEMDRAW;
*pResult |= CDRF_NOTIFYPOSTPAINT;
*pResult |= CDRF_NOTIFYPOSTERASE;

在你的函数结束时

关于c++ - 在 NMLVCUSTOMDRAW C++ 中获取列 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12224754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com