15,980
社区成员
发帖
与我相关
我的任务
分享
void CMyMdi::OnNcPaint() // NC SelfDraw
{
// TODO: Add your message handler code here
CSize sizeButton(25,26);//GetSystemMetrics(SM_CXSIZE),GetSystemMetrics(SM_CYSIZE));// 27,27
CWindowDC dc(this);
CRect rect,rt;
GetWindowRect(rect);
rect.OffsetRect(-rect.left,-rect.top);
// 3 pixel board
dc.Draw3dRect(&rect,RGB(210,208,200),RGB(64,64,64));
rect.DeflateRect(1,1);//
dc.Draw3dRect(&rect,RGB(255,255,255),RGB(128,128,128));
rect.DeflateRect(1,1);//
dc.Draw3dRect(&rect,RGB(210,208,200),RGB(210,208,200));
// background
rect.bottom = GetSystemMetrics(SM_CYCAPTION);// 31
DrawColorTitle(rect,RGB(0,0,255),RGB(220,220,255),&dc);
// draw icon 16*16 -> 24*24
DrawIconEx(dc.m_hDC,rect.left+2,rect.top+2,m_hIcon,24,24,0,0,DI_IMAGE);
// text
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(255,255,255));
if(IsIconic())
{
dc.TextOut(32,6,"Min..",5);
}
else
{
dc.TextOut(32,6,"MyMdi",5);
}
// button size
CRect rc;
rc.right = rect.right-2;
rc.left = rc.right - sizeButton.cx;
rc.top = rect.top+3;
rc.bottom = sizeButton.cy+3;
// draw button
dc.DrawFrameControl(rc,DFC_CAPTION,DFCS_CAPTIONCLOSE);
rc.OffsetRect(-sizeButton.cx-2,0);
dc.DrawFrameControl(rc,DFC_CAPTION,DFCS_CAPTIONMAX|DFCS_INACTIVE);
rc.OffsetRect(-sizeButton.cx,0);
if(IsIconic())
{
dc.DrawFrameControl(rc,DFC_CAPTION,DFCS_CAPTIONRESTORE);
}
else
{
dc.DrawFrameControl(rc,DFC_CAPTION,DFCS_CAPTIONMIN);
}
// CMDIFrameWnd::OnNcPaint();// for painting messages
}
//
void DrawColorTitle(CRect rect, COLORREF col1, COLORREF col2,CDC* pDC)
{
int cx = rect.Width();
int red = GetRValue(col2) - GetRValue(col1);
int green = GetGValue(col2) - GetGValue(col1);
int blue = GetBValue(col2) - GetBValue(col1);
int i = 0;
while (i < cx)
{
int r = GetRValue(col1) + i*red / cx;
int g = GetGValue(col1) + i*green / cx;
int b = GetBValue(col1) + i*blue / cx;
CPen pen(PS_SOLID,1,RGB(r,g,b));
pDC->SelectObject(pen);
pDC->MoveTo(i,0);
pDC->LineTo(i,rect.bottom);
++i;
}
}
//
void CMyMdi::OnNcPaint()
{
// TODO: Add your message handler code here
if(IsIconic())
{
CSize sizeButton(GetSystemMetrics(SM_CXSIZE),GetSystemMetrics(SM_CYSIZE));// 27,27
sizeButton.cx-=1;
sizeButton.cy-=1;
//
CWindowDC dc(this);
CRect rect,rt;
GetWindowRect(rect);
rect.OffsetRect(-rect.left,-rect.top);
// 3 pixel board
dc.Draw3dRect(&rect,GetSysColor(COLOR_3DHILIGHT),GetSysColor(COLOR_3DFACE));
rect.DeflateRect(1,1);//
dc.Draw3dRect(&rect,GetSysColor(COLOR_3DHILIGHT),GetSysColor(COLOR_3DSHADOW));
rect.DeflateRect(1,1);//
dc.Draw3dRect(&rect,GetSysColor(COLOR_3DHILIGHT),GetSysColor(COLOR_3DSHADOW));
rect.bottom = 30;
// background
DrawColorTitle(rect,RGB(0,0,255),RGB(200,200,255),&dc);
// draw icon 16*16 -> 26*26
HICON hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
DrawIconEx(dc.m_hDC,4,2,hIcon,26,26,0,0,DI_IMAGE);
// text
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(255,255,255));
dc.TextOut(34,4,"欢迎",4);
// button size
CRect rc;
rc.right = rect.Width();
rc.left = rc.right - sizeButton.cx;
rc.top = rect.top+3;
rc.bottom = sizeButton.cy+3;
// draw button
dc.DrawFrameControl(rc,DFC_CAPTION,DFCS_CAPTIONCLOSE);
rc.OffsetRect(-sizeButton.cx-2,0);
dc.DrawFrameControl(rc,DFC_CAPTION,DFCS_CAPTIONMAX);
rc.OffsetRect(-sizeButton.cx,0);
dc.DrawFrameControl(rc,DFC_CAPTION,DFCS_CAPTIONMIN);
return;
}
//
CMDIFrameWnd::OnNcPaint();// for painting messages
}
void CWndMainView::OnNcPaint()
{
// TODO: Add your message handler code here
if (::IsIconic(m_hWnd))
{
CWindowDC dc(this);
CRect rect;
GetWindowRect(&rect);
ScreenToClient(&rect);
dc.FillSolidRect(rect, RGB(255, 255, 255));
Graphics graphics(dc.GetSafeHdc());
graphics.SetSmoothingMode(SmoothingModeHighQuality);
CSize sizeBtn(38, 30);
Image* pImage = GetImageByID(IDR_PNG_WINDOW_CLOSE);
if (NULL != pImage)
{
sizeBtn.cx = pImage->GetWidth();
sizeBtn.cy = pImage->GetHeight()/2;
}
m_btnClose.rcBtn.right = rect.right - SCALEDPI(5);
m_btnClose.rcBtn.left = m_btnClose.rcBtn.right - sizeBtn.cx;
m_btnClose.rcBtn.top = (rect.top + rect.bottom - sizeBtn.cy)/2;
m_btnClose.rcBtn.bottom = m_btnClose.rcBtn.top + sizeBtn.cy;
::SetRectEmpty(&m_btnMinimize.rcBtn);
m_btnRestore.rcBtn = m_btnClose.rcBtn;
m_btnRestore.rcBtn.right = m_btnClose.rcBtn.left - SCALEDPI(5);
m_btnRestore.rcBtn.left = m_btnRestore.rcBtn.right - sizeBtn.cx;
DrawButton(graphics, m_btnClose, GetImageByID(IDR_PNG_WINDOW_CLOSE));
DrawButton(graphics, m_btnRestore, GetImageByID(IDR_PNG_WINDOW_RESTORE));
}
// Do not call CWnd::OnNcPaint() for painting messages
}