MFC自定义记号在滑块移动时被擦除

MFC自定义记号在滑块移动时被擦除,mfc,Mfc,我正在绘制自定义滑块控件。但我的抽搐痕迹会随着拇指的移动而消失。我在ITEMPREPAINT中绘制记号,如下所示: if( lpcd->dwDrawStage == CDDS_ITEMPREPAINT ) { if(lpcd->dwItemSpec == TBCD_TICS) { CDC *pDC = CDC::FromHandle(lpcd->hdc); INT nMin=0,nMax=0,rang

我正在绘制自定义滑块控件。但我的抽搐痕迹会随着拇指的移动而消失。我在ITEMPREPAINT中绘制记号,如下所示:

if( lpcd->dwDrawStage == CDDS_ITEMPREPAINT )
    {
 if(lpcd->dwItemSpec == TBCD_TICS)
         {
             CDC *pDC = CDC::FromHandle(lpcd->hdc);
            INT nMin=0,nMax=0,range;
            GetRange(nMin,nMax);
            range = nMax - nMin;

            INT num_tics = 4;
            INT frequency = range/num_tics;

            CRect channelRect, thumbRect;
            GetChannelRect(&channelRect);
            GetThumbRect(&thumbRect);
            INT width,pos=channelRect.left;

            /*pDC->MoveTo(pos,channelRect.bottom);
            pDC->LineTo(pos,channelRect.bottom+10);*/

            for (INT tic=0; tic<num_tics; tic++)
            {
                width = channelRect.right - channelRect.left;
                pos +=  width/num_tics;


                pDC->MoveTo(pos,channelRect.bottom);
                pDC->LineTo(pos,channelRect.bottom+10);
            }

           *pResult = CDRF_SKIPDEFAULT;
            return;
         }
}
if(lpcd->dwDrawStage==CDDS\u itemprespaint)
{
如果(lpcd->dwItemSpec==TBCD_TICS)
{
CDC*pDC=CDC::FromHandle(lpcd->hdc);
INT nMin=0,nMax=0,范围;
GetRange(nMin,nMax);
范围=nMax-nMin;
整数=4;
INT frequency=范围/数量;
正确的channelRect,thumbRect;
GetChannelRect(&channelRect);
GetThumbRect(&thumbRect);
整数宽度,pos=channelRect.left;
/*pDC->移动到(位置,通道直接底部);
pDC->LineTo(位置,通道直接底部+10)*/
用于(INT tic=0;ticMoveTo(位置,channelRect.bottom);
pDC->LineTo(位置,通道直接底部+10);
}
*pResult=CDRF\u SKIPDEFAULT;
回来
}
}

我从未尝试在滑块中绘制勾号,但是,我会尝试在CDDS\u ITEMPOSTPAINT期间渲染它们。嗨,如果我删除相同的实现并在CDDS\u ITEMPOSTPAINT下执行相同的操作,则我无法在应用程序启动时看到TICS。从下面的任务栏单击应用程序时,TICS会出现,因为后期绘制。如果我在“预绘制”和“后期绘制”部分下保持相同的实现,那么我将面临相同的渲染问题。