VC 窗体非客户区的绘制2015-02-20VC 窗体非客户区的绘制 OnNcPaint(UINT message, WPARAM wParam, LPARAM lParam) .
void CSkinAndLangDlg::OnNcPaint(UINT message, WPARAM wParam, LPARAM lParam){HDC WindowDC = ::GetWindowDC(m_hWnd);////取得整个窗体矩形RECT WindowRect;GetWindowRect(&WindowRect);OffsetRect(&WindowRect, -WindowRect.left, - WindowRect.top);////取得客户区矩形,并从WINDOWDC中排除不予绘制//RECT ClientRect;//GetClientRect(&ClientRect);//OffsetRect(&ClientRect, BorderLeftWidth, BorderTopHeight);//ExcludeClipRect(WindowDC, ClientRect.left, ClientRect.top, ClientRect.right, ClientRect.bottom);//窗体宽度和高度//int width, height;//width = WindowRect.right;////height = WindowRect.bottom;////填充背景//Bitmap bmp(width, height);//Graphics* g = Graphics::FromImage(&bmp);//SolidBrush sbr(Color(255,120,120,120));//g->FillRectangle(&sbr, 0, 0, width, height);// //Image *pImage = NULL;//skinApp.LoadPng(1, (void*&)pImage);////g->DrawImage(pImage, 0, 0);//int x_CtrBox = width - CtrBoxWidth - 5;//int y_CtrBox = 0;//Pen pen(Color(255,128,128,128), 1);//g->DrawRectangle(&pen, x_CtrBox, y_CtrBox, CtrBoxWidth, CtrBoxHeight);////最小化按钮//pen.SetWidth(2);//g->DrawLine(&pen, x_CtrBox + 3, y_CtrBox + CtrBoxHeight / 2,//x_CtrBox + CtrBoxWidth / 3 - 3, y_CtrBox + CtrBoxHeight / 2);//最大化按钮//g->DrawLine(&pen, //x_CtrBox + CtrBoxWidth + 3, //y_CtrBox + 5,//CtrBoxWidth / 3 - 6, //CtrBoxWidth / 3 - 6);//关闭按钮//g->DrawLine(&pen, //x_CtrBox + CtrBoxWidth / 3 * 2 + 3, //y_CtrBox + 3,//x_CtrBox + CtrBoxWidth - 3, //y_CtrBox + CtrBoxHeight - 3);//g->DrawLine(&pen, //x_CtrBox + CtrBoxWidth - 3, //y_CtrBox + 3,//x_CtrBox + CtrBoxWidth / 3 * 2 + 3, //y_CtrBox + CtrBoxHeight - 3);Graphics g2(WindowDC);SolidBrush sbr(Color(255,120,120,120));//左侧边框g2.FillRectangle(&sbr, 0, BorderTopHeight, BorderLeftWidth, WindowRect.bottom);//右侧边框g2.FillRectangle(&sbr, WindowRect.right - BorderLeftWidth, BorderTopHeight, WindowRect.right - BorderLeftWidth, WindowRect.bottom);//下边框g2.FillRectangle(&sbr, 0, WindowRect.bottom - BorderLeftWidth, WindowRect.right, WindowRect.bottom);Image *pImage = NULL;CDefaultSkinApp::LoadPng(1, (void*&)pImage);Image *pImg = pImage->GetThumbnailImage(WindowRect.right, BorderTopHeight, NULL, NULL);TRACE(_T("WindowRect.right = %d
"), WindowRect.right);g2.DrawImage(pImg, 0, 0, pImg->GetWidth(), pImg->GetHeight());delete pImg;::ReleaseDC(m_hWnd, WindowDC);}
From:csdn博客 微wx笑