Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här avsnittet innehåller exempel som visar hur du implementerar anpassad dragning.
Följande kodfragment är en del av en WM_NOTIFY-hanterare som visar hur du hanterar anpassade dragningsmeddelanden som skickas till en listvykontroll.
LPNMLISTVIEW pnm = (LPNMLISTVIEW)lParam;
switch (pnm->hdr.code){
...
case NM_CUSTOMDRAW:
LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)lParam;
switch(lplvcd->nmcd.dwDrawStage) {
case CDDS_PREPAINT :
return CDRF_NOTIFYITEMDRAW;
case CDDS_ITEMPREPAINT:
SelectObject(lplvcd->nmcd.hdc,
GetFontForItem(lplvcd->nmcd.dwItemSpec,
lplvcd->nmcd.lItemlParam) );
lplvcd->clrText = GetColorForItem(lplvcd->nmcd.dwItemSpec,
lplvcd->nmcd.lItemlParam);
lplvcd->clrTextBk = GetBkColorForItem(lplvcd->nmcd.dwItemSpec,
lplvcd->nmcd.lItemlParam);
/* At this point, you can change the background colors for the item
and any subitems and return CDRF_NEWFONT. If the list-view control
is in report mode, you can simply return CDRF_NOTIFYSUBITEMDRAW
to customize the item's subitems individually */
...
return CDRF_NEWFONT;
// or return CDRF_NOTIFYSUBITEMDRAW;
case CDDS_SUBITEM | CDDS_ITEMPREPAINT:
SelectObject(lplvcd->nmcd.hdc,
GetFontForSubItem(lplvcd->nmcd.dwItemSpec,
lplvcd->nmcd.lItemlParam,
lplvcd->iSubItem));
lplvcd->clrText = GetColorForSubItem(lplvcd->nmcd.dwItemSpec,
lplvcd->nmcd.lItemlParam,
lplvcd->iSubItem));
lplvcd->clrTextBk = GetBkColorForSubItem(lplvcd->nmcd.dwItemSpec,
lplvcd->nmcd.lItemlParam,
lplvcd->iSubItem));
/* This notification is received only if you are in report mode and
returned CDRF_NOTIFYSUBITEMDRAW in the previous step. At
this point, you can change the background colors for the
subitem and return CDRF_NEWFONT.*/
...
return CDRF_NEWFONT;
}
...
}
Det första NM_CUSTOMDRAW meddelandet har dwDrawStage-medlemmen i NMCUSTOMDRAW-strukturen inställd på CDDS_PREPAINT. Hanteraren returnerar CDRF_NOTIFYITEMDRAW för att ange att den vill ändra ett eller flera objekt individuellt.
Om CDRF_NOTIFYITEMDRAW returnerades i föregående steg har nästa NM_CUSTOMDRAW-meddelandedwDrawStage inställt på CDDS_ITEMPREPAINT. Hanteraren hämtar aktuella färg- och teckensnittsvärden. Nu kan du ange nya värden för liten ikon, stor ikon och listlägen. Om kontrollen är i rapportläge kan du också ange nya värden som ska gälla för alla underobjekt i objektet. Om du har ändrat något returnerar du CDRF_NEWFONT. Om kontrollen är i rapportläge och du vill hantera underobjekten individuellt returnerar du CDRF_NOTIFYSUBITEMDRAW.
Det slutliga meddelandet skickas endast om kontrollen är i rapportläge och du returnerade CDRF_NOTIFYSUBITEMDRAW i föregående steg. Proceduren för att ändra teckensnitt och färger är densamma som det steget, men den gäller bara för en enda underwebbplats. Returnera CDRF_NEWFONT för att meddela kontrollen om färgen eller teckensnittet har ändrats.