Ejemplo n.º 1
0
void CPictureView::SetScrollSizes()
{
    //得到客户区的大小
    CRect rcClient;
    GetClientRect(&rcClient);
    CSize szPage = rcClient.Size();

    //得到图片显示的大小
    CSize szTotal(m_PictDisplaySize);

    CSize szLine = szPage;
    szLine.cx /= 10;
    szLine.cy /= 10;

    CScrollView::SetScrollSizes(MM_TEXT, szTotal, szPage, szLine);
    Invalidate();
}
Ejemplo n.º 2
0
//绘制按钮,只有菜单按钮才需要该函数
//图标按钮不是自画方式,使用系统函数进行绘制
void CIconBut::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	// TODO: Add your message handler code here and/or call default
	//CButton::OnDrawItem(nIDCtl, lpDrawItemStruct);
	if( ( GetStyle( ) & BS_OWNERDRAW ) == BS_OWNERDRAW )
	{  //该控件为自画方式
		//if(m_bStayDown&&m_bLockDown) return;	  
	   CRect rect(lpDrawItemStruct->rcItem);
	   CDC* pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
	   UINT state=lpDrawItemStruct->itemState;
	   UINT action=lpDrawItemStruct->itemAction;
	   //得到系统的按钮各部分颜色
	   HBRUSH hbrText=GetSysColorBrush(COLOR_BTNTEXT);
	   HBRUSH hbrFace=GetSysColorBrush(COLOR_3DFACE);
	   HBRUSH hOldBrush=(HBRUSH)SelectObject(pDC->m_hDC,hbrFace);
       //绘制边界
	   CRect edgeRect(rect);
	   pDC->Rectangle(rect);
	   if(state&ODS_FOCUS)
		   edgeRect.InflateRect(-1,-1);
	   //绘制按钮体
	   /*if((state&ODS_SELECTED)&&(action&ODA_SELECT)&&(state&ODS_FOCUS))
	   { //按钮被选中
		 CPen pen(PS_SOLID,1,GetSysColor(COLOR_3DSHADOW));		 
		 CPen* pOldPen=pDC->SelectObject(&pen);		 		 
		 pDC->Rectangle(edgeRect);
		 pDC->SelectObject(pOldPen);
	   }
	   else*/
	   	 pDC->DrawEdge(edgeRect,EDGE_RAISED,BF_RECT|BF_SOFT);
	     //m_bStayDown=FALSE; }
	   //绘制按钮文字标题
	   CSize szTri=pDC->GetOutputTextExtent(_T("M"),1);
	   CString text;
	   GetWindowText(text);
	   CSize szText=pDC->GetOutputTextExtent(text,text.GetLength());
	   CSize szTotal(szText);
	   szTotal.cx+=szTri.cx;
	   CRect textRect=rect;
	   textRect.InflateRect(-((rect.Width()-szTotal.cx)/2),
		   -((rect.Height()-szTotal.cy)/2));
	   textRect.top--;
	   CRect triRect=textRect;
	   triRect.left=textRect.right-szTri.cx;
	   triRect.InflateRect(0,-((textRect.Height()-szTri.cy)/2));
	   pDC->SetBkMode(TRANSPARENT);
	   if(state&ODS_SELECTED)
		   textRect.OffsetRect(1,1);
	   pDC->DrawText(text,textRect,DT_SINGLELINE|DT_LEFT);
	   SelectObject(pDC->m_hDC,hbrText);
	   CPoint ptTri(textRect.left+szText.cx,textRect.top+3);
	   DrawTriangle(pDC,ptTri,10);
	   if(state&ODS_FOCUS)
	   {
		   CRect fRect(rect);
		   fRect.InflateRect(-4,-4);
		   pDC->DrawFocusRect(fRect);
	   }
	   SelectObject(pDC->m_hDC,hOldBrush);
	   if((action&ODA_SELECT)&&
		 (state&ODS_FOCUS)&&(state&ODS_SELECTED))
	        DisplayMenu();
	}
	
}