Re: something about clipping in OnCustomdraw
 
On 10 Okt., 18:16, ".rhavin grobert" <cl...@yahoo.de> wrote:
On 10 Okt., 18:02, ".rhavin grobert" <cl...@yahoo.de> wrote:
hi folks;-)
the following snipped comes from a customdraw-fn in a slider. As you
can see, i draw my own thumb and want to set some text in the control:
____________________________________________________________
class SHTC_API CQSlider : public CSliderCtrl
{
public:
        CQSlider();
        virtual ~CQSlider();
        // ... other stuff ... //
        // set sliders text, may contain '%d' (or %x...) for va=
lue
        void QTitleSet(LPCTSTR szTitle);
protected:
        //{{AFX_MSG(CQSlider)
        afx_msg void OnCustomdraw(NMHDR* pNMHDR, LRESULT* pResu=
lt);
        //}}AFX_MSG
        DECLARE_MESSAGE_MAP()
private:
        void _DrawThumb(NMCUSTOMDRAW& nmcd);
        void _DrawText(NMCUSTOMDRAW& nmcd);
        CString    m_scTitle;
};
//---------------------------------------------------------------------=
--------
void CQSlider::OnCustomdraw(NMHDR* pNMHDR, LRESULT* pResult)
{
    NMCUSTOMDRAW nmcd = *(LPNMCUSTOMDRAW)pNMHDR;
        switch (nmcd.dwDrawStage)
        {
        case CDDS_PREPAINT:
                *pResult = CDRF_NOTIFYITEMDRAW | CDRF=
_NOTIFYPOSTPAINT;
                break;
        case CDDS_ITEMPREPAINT:
                switch (nmcd.dwItemSpec)
                {
                case TBCD_TICS:
                        *pResult = CDRF_DODEF=
AULT;
                        break;
                case TBCD_THUMB:
                        _DrawThumb(nmcd);
                        *pResult = CDRF_SKIPD=
EFAULT;
                        break;
                case TBCD_CHANNEL:
                        *pResult = CDRF_DODEF=
AULT;
                        break;
                }
                break;
        case CDDS_POSTPAINT:
                _DrawText(nmcd);
                break;
        default:
                *pResult = CDRF_DODEFAULT;
        }
}
//---------------------------------------------------------------------=
--------
void CQSlider::_DrawText(NMCUSTOMDRAW& nmcd)
{
        CDC* pDC = CDC::FromHandle(nmcd.hdc);
        CRect rcClient;
        GetClientRect(&rcClient);
        CString scText;
        scText.Format(m_scTitle, GetPos());
        pDC->SetBkMode(TRANSPARENT);
        pDC->SelectClipRgn(NULL);
        pDC->DrawText(scText, rcClient, DT_CENTER | DT_BOTTOM |
DT_SINGLELINE);
}
____________________________________________________________
the problem is: first time (initial, get focus), the text is drawn
correctly, but then, when moving the slider,  everything except the
thumb gets clipped, so pDC->SelectClipRgn(NULL) seems to dont do
anything at all.
any suggestions welcome,
~.rhavin;)
oh and i should add that pDC->SelectClipRgn(NULL) returns SIMPLEREGION
but shouldnt it return NULLREGION !?
played with SetBoundsRect(), but that doesnt help either;-/