MFC自定义记号在滑块移动时被擦除
我正在绘制自定义滑块控件。但我的抽搐痕迹会随着拇指的移动而消失。我在ITEMPREPAINT中绘制记号,如下所示: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
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会出现,因为后期绘制。如果我在“预绘制”和“后期绘制”部分下保持相同的实现,那么我将面临相同的渲染问题。