-

- 加为好友
- 发送私信
- 在线聊天
-
_microsoft
- 等级:

- 可用分等级:
- 总技术分:
- 总技术分排名:
- 结帖率:
|
| 发表于:2008-12-04 20:42:19 楼主 |
原来在vc6下编译的能正常用的下拉复选框,现在挪到vc2005下面不能用了,不显示复选框和对勾,但是还是能选中,能相应鼠标事件。下面是部分代码,请大家帮忙看看是什么问题。还有大幅代码贴不上来,需要的我继续贴。 void CCheckCmbTreeBox::DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct ) { //## GET CDC CDC* pDC = CDC::FromHandle(lpDrawItemStruct->hDC); //## FRAME CRect rc = lpDrawItemStruct->rcItem; pDC->DrawEdge( rc, EDGE_SUNKEN, BF_TOP | BF_LEFT | BF_BOTTOM | BF_RIGHT ); //## DRAW white BK rc.DeflateRect(2, 2); static CBrush brWindow(GetSysColor(COLOR_WINDOW)); static CBrush brBtnFace(GetSysColor(COLOR_BTNFACE)); static CBrush brBtnShadow(GetSysColor(COLOR_BTNSHADOW)); if (IsWindowEnabled()) pDC->FillRect(&rc, &brWindow); else pDC->FillRect(&rc, &brBtnFace); //## COMPUTE Button Rect CRect rcButton = rc; rcButton.left = rcButton.right - DROP_BUTTON_WIDTH; if (rcButton.left < rc.left) rcButton.left = rc.left; //## COMPUTE Caption Rect CRect rcCaption = rc; rcCaption.right = rcButton.left - 1; if (rcCaption.right < rcCaption.left) rcCaption.right = rcCaption.left; //## FOCUS rcCaption.DeflateRect(1, 1); if (lpDrawItemStruct->itemState & ODS_FOCUS) pDC->DrawFocusRect(rcCaption); rcCaption.DeflateRect(2, 1); //## GET Caption CString strText; GetWindowText(strText); //## DRAW Caption pDC->SetBkColor( (IsWindowEnabled()) ? GetSysColor(COLOR_WINDOW) : GetSysColor(COLOR_BTNFACE) ); COLORREF crOldColor = SetTextColor(lpDrawItemStruct->hDC, RGB(0, 0, 0)); DrawText(lpDrawItemStruct->hDC, strText, strText.GetLength(), &rcCaption, DT_SINGLELINE | DT_VCENTER ); SetTextColor(lpDrawItemStruct->hDC, crOldColor); //## GET Button Style UINT uStyle = DFCS_BUTTONPUSH; if (lpDrawItemStruct->itemState & ODS_SELECTED) uStyle |= DFCS_PUSHED; //## DRAW Button if (lpDrawItemStruct->itemState & ODS_SELECTED) { pDC->FrameRect(rcButton, &brBtnShadow); rcButton.DeflateRect(1, 1); pDC->FillRect(&rcButton, &brBtnFace); rcButton.DeflateRect(1, 3, 0, 0); } else { pDC->FrameRect(rcButton, &brBtnFace); rcButton.DeflateRect(1, 1, 0, 0); DrawFrameControl(lpDrawItemStruct->hDC, &rcButton, DFC_BUTTON, uStyle); } //## DRAW Arrow static CPen penBlack(PS_SOLID, 1, RGB(0,0, 0)); static CPen penBtnShadow(PS_SOLID, 1, GetSysColor(COLOR_BTNSHADOW));// CPen* ppenOld; if (IsWindowEnabled()) ppenOld = pDC->SelectObject(&penBlack); else ppenOld = pDC->SelectObject(&penBtnShadow); for(long i=0; i <4; i++) { pDC->MoveTo( rcButton.left + 3 + i, rcButton.top + rcButton.Height()/2 - 2 + i); pDC->LineTo( rcButton.left + 3 + 7 - i, rcButton.top + rcButton.Height()/2 - 2 + i); if (!IsWindowEnabled()) pDC->SetPixel(rcButton.left + 3 + 7 - i, rcButton.top + rcButton.Height()/2 - 2 + i + 1, 0xFFFFFF); } pDC->SelectObject(ppenOld); } |
|
|
|
50
修改
删除
举报
引用
回复
| |