void CRibbonDialog::OnNcPaint() { CRect r, rTitle, rMenu, rCookie; GetWindowRect(r); r.OffsetRect(-r.left, -r.top); CalcTitleRect(TRUE, rTitle); CalcSysMenuRect(TRUE, rMenu); rCookie.SetRect( rMenu.left + SYS_COOKIE_OFFSET + 1, rMenu.top + SYS_COOKIE_OFFSET + 1, rMenu.left + SYS_COOKIE_OFFSET + SYS_COOKIE_WIDTH, rMenu.top + SYS_COOKIE_OFFSET + SYS_COOKIE_HEIGHT); // Draw the title bar, sys menu cookie, and border CDC *pDC = GetWindowDC(); if (!pDC) return; CBrush TitleBrush(GetSysColor(COLOR_ACTIVECAPTION)); CBrush FrameBrush(COLOR_BORDER); CBrush MenuBrush(COLOR_SYSMENU); CBrush CkBrush(COLOR_COOKIEFILL); CBrush CkBrushShadow(COLOR_SYSSHADOW); pDC->FillRect(rTitle, &TitleBrush); pDC->FillRect(rMenu, &MenuBrush); pDC->FrameRect(rTitle, &FrameBrush); pDC->FrameRect(r, &FrameBrush); pDC->FrameRect(rMenu, &FrameBrush); pDC->FrameRect(rCookie, &CkBrushShadow); rCookie.OffsetRect(-1, -1); pDC->FillRect(rCookie, &CkBrush); pDC->FrameRect(rCookie, &FrameBrush); CFont fnt; int FntHeight = 12; if (fnt.CreateFont(FntHeight,0,0,0,FW_NORMAL,FALSE,FALSE,0,0,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE|TMPF_TRUETYPE,NULL)) { CFont *pfont = pDC->SelectObject(&fnt); pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(GetSysColor(COLOR_CAPTIONTEXT)); pDC->DrawText((LPCSTR)"Picture Publisher",-1,&rTitle,DT_CENTER|DT_VCENTER); pDC->SelectObject(pfont); fnt.DeleteObject(); } ReleaseDC(pDC); }
void ZoomBox_NcPaint(HWND hwnd, HRGN hrgn) /************************************************************************/ { CRect r, rTitle, rMenu, rCaption, rCookie; TCHAR Caption[80]; GetWindowRect(hwnd,&r); r.OffsetRect(-r.left, -r.top); CalcTitleRect(hwnd,TRUE, rTitle); CalcSysMenuRect(hwnd,TRUE, rMenu); rCookie.SetRect( rMenu.left + SYS_COOKIE_OFFSET + 1, rMenu.top + SYS_COOKIE_OFFSET + 1, rMenu.left + SYS_COOKIE_OFFSET + SYS_COOKIE_WIDTH, rMenu.top + SYS_COOKIE_OFFSET + SYS_COOKIE_HEIGHT); // Exclude the Caption Bar area and Have default draw HDC hDC = ::GetDCEx(hwnd, hrgn, DCX_USESTYLE | DCX_WINDOW | DCX_INTERSECTRGN | DCX_LOCKWINDOWUPDATE); int level = ::SaveDC(hDC); CRgn rgn1; CRgn rgn2; rCaption.UnionRect((LPRECT)&rTitle,(LPRECT)&rMenu); ::ClientToScreen(hwnd,(LPPOINT)&rCaption); ::ClientToScreen(hwnd,(LPPOINT)&rCaption.right); rgn1.FromHandle(hrgn); rgn2.CreateRectRgn(rCaption.left,rCaption.top,rCaption.right,rCaption.bottom); int ret = rgn2.CombineRgn(&rgn1,&rgn2,RGN_DIFF); /* ERROR 0 NULLREGION 1 SIMPLEREGION 2 COMPLEXREGION 3 */ DefWindowProc(hwnd, WM_NCPAINT, (WPARAM)(HRGN)(rgn2.GetSafeHandle()), (LPARAM)0L); ::RestoreDC(hDC,level); ::ReleaseDC(hwnd,hDC); // Draw the title bar, sys menu cookie, and border CWnd *pWnd = CWnd::FromHandle(hwnd); CDC *pDC = pWnd->GetWindowDC(); if (!pDC) return; CBrush TitleBrush(GetSysColor(COLOR_ACTIVECAPTION)); CBrush FrameBrush(COLOR_BORDER); CBrush MenuBrush(COLOR_SYSMENU); CBrush CkBrush(COLOR_COOKIEFILL); CBrush CkBrushShadow(COLOR_SYSSHADOW); pDC->FillRect(rTitle, &TitleBrush); pDC->FillRect(rMenu, &MenuBrush); pDC->FrameRect(rTitle, &FrameBrush); pDC->FrameRect(r, &FrameBrush); pDC->FrameRect(rMenu, &FrameBrush); pDC->FrameRect(rCookie, &CkBrushShadow); rCookie.OffsetRect(-1, -1); pDC->FillRect(rCookie, &CkBrush); pDC->FrameRect(rCookie, &FrameBrush); CFont fnt; int FntHeight = 12; if (fnt.CreateFont(FntHeight,0,0,0,FW_NORMAL,FALSE,FALSE,0,0,OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE|TMPF_TRUETYPE,NULL)) { pDC->SelectObject(&fnt); pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(GetSysColor(COLOR_CAPTIONTEXT)); if (::GetWindowText(hwnd,Caption,80) == 0) lstrcpy(Caption,_T("QuickZoom")); pDC->DrawText((LPCSTR)Caption,-1,&rTitle,DT_CENTER|DT_VCENTER); fnt.DeleteObject(); } pWnd->ReleaseDC(pDC); }
void CDrawWarn::Draw(CDC* pDC) { ASSERT_VALID(this); CRect rect = m_position; rect.NormalizeRect(); if(rect.Width() < 10 || rect.Height()<10) return; Rect GdiRect (rect.TopLeft().x,rect.TopLeft().y,rect.Size().cx,rect.Size().cy); Color crBackColor,crTitleColor,crLineColor,crTextColor ; crBackColor.SetFromCOLORREF(m_ctlBackColor); crTitleColor.SetFromCOLORREF(m_ctlTitleColor ); crLineColor.SetFromCOLORREF(m_ctlLineColor); crTextColor.SetFromCOLORREF(m_ctlTextColor); Graphics graphics (pDC->m_hDC); graphics.SetSmoothingMode (SmoothingModeHighSpeed); Graphics Textgraphics (pDC->m_hDC); SolidBrush solidBrush(crBackColor); SolidBrush TitleBrush(crTitleColor); SolidBrush TextBrush(crTextColor); Pen pen(crLineColor,1); graphics.FillRectangle(&solidBrush,GdiRect); BSTR bstr = m_fontName.AllocSysString(); /// BSTR bstr = _com_util::ConvertStringToBSTR(m_fontName); FontFamily fontFamily(bstr); SysFreeString(bstr); Font font(&fontFamily, m_fontSize, m_fontStyle, UnitPoint); for(int j =1; j<= m_nColCount; j++) { m_nCellWidth = 0; for(int i=1; i<= m_nRowCount; i++) { CRect rc = rect; if(m_bIsAutoSize) { m_nCellWidth = rect.Width()/m_nRowCount; m_nCellHeight = rect.Height()/m_nColCount; rc.TopLeft().x += (i-1)*m_nCellWidth; rc.TopLeft().y += (j-1)*m_nCellHeight; m_CellRect = CRect(rc.TopLeft(),CSize(m_nCellWidth,m_nCellHeight)); m_CellRect.NormalizeRect(); } else { rc.TopLeft().x += m_nCellWidth; m_nCellWidth += rect.Width()*m_nPercent[i-1]/100; m_nCellHeight = rect.Height()/m_nColCount; rc.TopLeft().y += (j-1)*m_nCellHeight; m_CellRect = CRect(rc.TopLeft(),CSize(rect.Width()*m_nPercent[i-1]/100,m_nCellHeight)); m_CellRect.NormalizeRect(); } Rect CellRect(m_CellRect.TopLeft().x,m_CellRect.TopLeft().y,m_CellRect.Size().cx,m_CellRect.Size().cy); graphics.DrawRectangle(&pen,CellRect); if(j == m_nColCount) //画标题 { StringFormat stringFormat; stringFormat.SetAlignment(StringAlignmentCenter); stringFormat.SetLineAlignment(StringAlignmentCenter); stringFormat.SetFormatFlags(StringFormatFlagsDirectionRightToLeft); stringFormat.SetTrimming(m_trimmingSyle); CString m_strButton; if(i == 1) m_strButton = "点号"; if(i == 2) m_strButton = "数据"; if(i == 3) m_strButton = "说明"; if(i == 4) m_strButton = "报警原因"; if(i == 5) m_strButton = "时间"; m_strButton.TrimRight(); bstr = m_strButton.AllocSysString(); /// bstr = _com_util::ConvertStringToBSTR(m_strButton); RectF theRect (m_CellRect.TopLeft().x,m_CellRect.TopLeft().y,m_CellRect.Size().cx,m_CellRect.Size().cy); Matrix matrix(1,0,0,-1,0,0); Textgraphics.SetTransform(&matrix); theRect.Y *=-1; theRect.Height*=-1; Normallize (theRect); Textgraphics.FillRectangle(&TitleBrush,theRect); Textgraphics.DrawString(bstr,-1,&font, theRect,&stringFormat, &TextBrush); SysFreeString(bstr); } else { //画文字 m_CStrWarn pStrWarn StringFormat stringFormat; stringFormat.SetAlignment(StringAlignmentNear); stringFormat.SetLineAlignment(StringAlignmentNear); CString strWarn; /* if(i == 1) strWarn = m_CStrWarn[j].strPoint; if(i == 2) strWarn = m_CStrWarn[j].strDate; if(i == 3) strWarn = m_CStrWarn[j].strTime; if(i == 4) strWarn = m_CStrWarn[j].strText; if(i == 5) strWarn = m_CStrWarn[j].strWarn; */ strWarn.TrimRight(); bstr = strWarn.AllocSysString(); /// bstr = _com_util::ConvertStringToBSTR(strWarn); RectF theRect (m_CellRect.TopLeft().x,m_CellRect.TopLeft().y,m_CellRect.Size().cx,m_CellRect.Size().cy); Matrix matrix(1,0,0,-1,0,0); Textgraphics.SetTransform(&matrix); theRect.Y *=-1; theRect.Height*=-1; Normallize (theRect); Textgraphics.DrawString(bstr,-1,&font, theRect,&stringFormat, &TextBrush); SysFreeString(bstr); } } } graphics.ReleaseHDC(pDC->m_hDC); }
void CDrawWarn::Draw(CDC* pDC) { ASSERT_VALID(this); CRect rect = m_position; rect.NormalizeRect(); if(rect.Width() < 10 || rect.Height()<10) return; pStrWarn = new STRWARN[m_nColCount]; AddWarn("1","2004/12/12","12:00","高报警","电压过低"); AddWarn("2","2004/12/12","12:00","高报警","电压过低"); AddWarn("3","2004/12/12","12:00","高报警","电压过低"); AddWarn("4","2004/12/12","12:00","高报警","电压过低"); AddWarn("5","2004/12/12","12:00","高报警","电压过低"); AddWarn("6","2004/12/12","12:00","高报警","电压过低"); AddWarn("7","2004/12/12","12:00","高报警","电压过低"); AddWarn("8","2004/12/12","12:00","高报警","电压过低"); AddWarn("9","2004/12/12","12:00","高报警","电压过低"); AddWarn("10","2004/12/12","12:00","高报警","电压过低"); AddWarn("11","2004/12/12","12:00","高报警","电压过低"); AddWarn("12","2004/12/12","12:00","高报警","电压过低"); Rect GdiRect (rect.TopLeft().x,rect.TopLeft().y,rect.Size().cx,rect.Size().cy); Color crBackColor,crTitleColor,crLineColor,crTextColor ; crBackColor.SetFromCOLORREF(m_ctlBackColor); crTitleColor.SetFromCOLORREF(m_ctlTitleColor ); crLineColor.SetFromCOLORREF(m_ctlLineColor); crTextColor.SetFromCOLORREF(m_ctlTextColor); Graphics graphics (pDC->m_hDC); Graphics Textgraphics (pDC->m_hDC); SolidBrush solidBrush(crBackColor); SolidBrush TitleBrush(crTitleColor); SolidBrush TextBrush(crTextColor); Pen pen(crLineColor,1); graphics.FillRectangle(&solidBrush,GdiRect); BSTR bstr = _com_util::ConvertStringToBSTR(m_fontName); /// WCHAR *fn = new unsigned short[m_fontName.GetLength()+1];; /// wcscpy(fn,bstr); FontFamily fontFamily(bstr); Font font(&fontFamily, m_fontSize, m_fontStyle, UnitPoint); for(int j =1; j<= m_nColCount; j++) { m_nCellWidth = 0; for(int i=1; i<= m_nRowCount; i++) { CRect rc = rect; if(m_bIsAutoSize) { m_nCellWidth = rect.Width()/m_nRowCount; m_nCellHeight = rect.Height()/m_nColCount; rc.TopLeft().x += (i-1)*m_nCellWidth; rc.TopLeft().y += (j-1)*m_nCellHeight; m_CellRect = CRect(rc.TopLeft(),CSize(m_nCellWidth,m_nCellHeight)); m_CellRect.NormalizeRect(); } else { rc.TopLeft().x += m_nCellWidth; m_nCellWidth += rect.Width()*m_nPercent[i-1]/100; m_nCellHeight = rect.Height()/m_nColCount; rc.TopLeft().y += (j-1)*m_nCellHeight; m_CellRect = CRect(rc.TopLeft(),CSize(rect.Width()*m_nPercent[i-1]/100,m_nCellHeight)); m_CellRect.NormalizeRect(); } Rect CellRect(m_CellRect.TopLeft().x,m_CellRect.TopLeft().y,m_CellRect.Size().cx,m_CellRect.Size().cy); graphics.DrawRectangle(&pen,CellRect); if(j == m_nColCount) //画标题 { StringFormat stringFormat; stringFormat.SetAlignment(StringAlignmentCenter); stringFormat.SetLineAlignment(StringAlignmentCenter); stringFormat.SetFormatFlags(StringFormatFlagsDirectionRightToLeft); stringFormat.SetTrimming(m_trimmingSyle); CString m_strButton; if(i == 1) m_strButton = "点号"; if(i == 2) m_strButton = "数据"; if(i == 3) m_strButton = "说明"; if(i == 4) m_strButton = "报警原因"; if(i == 5) m_strButton = "时间"; m_strButton.TrimRight(); /// int len = m_strButton.GetLength(); bstr = _com_util::ConvertStringToBSTR(m_strButton); /// WCHAR *strButton = new unsigned short[len]; /// wcscpy(strButton,bstr); RectF theRect (m_CellRect.TopLeft().x,m_CellRect.TopLeft().y,m_CellRect.Size().cx,m_CellRect.Size().cy); Matrix matrix(1,0,0,-1,0,0); Textgraphics.SetTransform(&matrix); theRect.Y *=-1; theRect.Height*=-1; Normallize (theRect); Textgraphics.FillRectangle(&TitleBrush,theRect); Textgraphics.DrawString(bstr,-1,&font, theRect,&stringFormat, &TextBrush); } else //画文字 { StringFormat stringFormat; stringFormat.SetAlignment(StringAlignmentNear); stringFormat.SetLineAlignment(StringAlignmentNear); CString strWarn; if(i == 1) strWarn = pStrWarn[j].strPoint; if(i == 2) strWarn = pStrWarn[j].strDate; if(i == 3) strWarn = pStrWarn[j].strTime; if(i == 4) strWarn = pStrWarn[j].strText; if(i == 5) strWarn = pStrWarn[j].strWarn; strWarn.TrimRight(); /// int len = strWarn.GetLength(); bstr = _com_util::ConvertStringToBSTR(strWarn); /// WCHAR *strButton = new unsigned short[len]; /// wcscpy(strButton,bstr); RectF theRect (m_CellRect.TopLeft().x,m_CellRect.TopLeft().y,m_CellRect.Size().cx,m_CellRect.Size().cy); Matrix matrix(1,0,0,-1,0,0); Textgraphics.SetTransform(&matrix); theRect.Y *=-1; theRect.Height*=-1; Normallize (theRect); Textgraphics.DrawString(bstr,-1,&font, theRect,&stringFormat, &TextBrush); } } } graphics.ReleaseHDC(pDC->m_hDC); }