
复制于hot007.com
| void CCardsCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) { CBitmap *pOldBitmap; CBitmap bitmap; CRect rect; GetClientRect(rect); CDC ppdc; CClientDC dc(this); ppdc.CreateCompatibleDC(&dc); if(background)//背景图案 { if(backbmp==1)bitmap.LoadBitmap(255); if(backbmp==2)bitmap.LoadBitmap(256); } else//前景图案 bitmap.LoadBitmap(IDB_BITMAP1 value-1); pOldBitmap=ppdc.SelectObject(&bitmap); dc.BitBlt(0,0,rect.Width(),rect.Height(),&ppdc,0,0,SRCCOPY); ppdc.SelectObject(pOldBitmap); } |
| protected: short value,backbmp; BOOL background; BOOL IsMove,m_IsMove; BOOL IsGoHome; CPoint OldPoint; CRect rect; long xx,yy; 修改后的函数如下: short CCardsCtrl::GetValue() { return value; } void CCardsCtrl::SetValue(short nNewValue) { value=nNewValue; SetModifiedFlag(); InvalidateControl();//立即刷新 } BOOL CCardsCtrl::GetBackground() { return background; } void CCardsCtrl::SetBackground(BOOL bNewValue) { background=bNewValue; SetModifiedFlag(); InvalidateControl(); } short CCardsCtrl::GetBackbmp() { return backbmp; } void CCardsCtrl::SetBackbmp(short nNewValue) { backbmp=nNewValue; SetModifiedFlag(); InvalidateControl(); } |
| IsMove=false; m_IsMove=false; IsGoHome=true; |
| void CCardsCtrl::OnLButtonDown(UINT nFlags, CPoint point) www.jc567.cn { if(IsMove)//是否是答应拖动鼠标 { m_IsMove=true; SetCapture();//捕捉鼠标 xx=point.x;//得到鼠标(相对于控件左上角)的坐标 yy=point.y; GetClientRect(&rect);//保存拖动前的扑克位置 ::ClientToScreen(m_hWnd,&rect.TopLeft()); OldPoint=rect.TopLeft(); MoveWindow(0,0,0,0);//得到相对量 GetClientRect(&rect); ::ClientToScreen(m_hWnd,&rect.TopLeft()); } COleControl::OnLButtonDown(nFlags, point); } void CCardsCtrl::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CPoint MyPoint=point; if(m_IsMove) { ClientToScreen(&MyPoint); MoveWindow(MyPoint.x-xx-rect.left,MyPoint.y-yy-rect.top,71,96); } COleControl::OnMouseMove(nFlags, point); } void CCardsCtrl::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(m_IsMove) { ReleaseCapture(); m_IsMove=false; if(IsGoHome) 文章来源于www.hot007.com MoveWindow(OldPoint.x-rect.left,OldPoint.y-rect.top,71,96);//还原到扑克牌拖动前的位置 } COleControl::OnLButtonUp(nFlags, point); } |