15,979
社区成员
发帖
与我相关
我的任务
分享
RECT rc;
GetWindowRect(m_hWnd,&rc);
OffsetRect(&rc,-rc.left,-rc.top);
if(m_hrgn)
DeleteObject(m_hrgn);
m_hrgn = CreateRoundRectRgn(rc.left,rc.top,rc.right,rc.bottom,NCB_CORNERSIZE,NCB_CORNERSIZE);
SetWindowRgn(m_hWnd,m_hrgn,TRUE);
InvalidateRect(m_hWnd,NULL,TRUE);
RECT rc;
GetWindowRect(m_hWnd,&rc);
OffsetRect(&rc,-rc.left,-rc.top);
if(m_hrgn)
DeleteObject(m_hrgn);
m_hrgn = CreateRoundRectRgn(rc.left,rc.top,rc.right,rc.bottom,NCB_CORNERSIZE,NCB_CORNERSIZE);
SetWindowRgn(m_hWnd,m_hrgn,TRUE);
InvalidateRect(m_hWnd,NULL,TRUE);
RINGMAINMSG(WM_NCCALCSIZE)
{
LPRECT lprc = (LPRECT)param.lParam;
lprc->top += WND_BORDER;
lprc->left += WND_BORDER;
lprc->right -= (WND_BORDER + 1); //右边框需要留出画边框线的位置,1
lprc->bottom -= (WND_BORDER + 1); //同理
return 0;
}
//先把各素材绘制到内存图象m_dibBanner
//背景
m_dibBkg.StretchTo(&m_dibBanner,0,0,rc.right,m_dibBanner.Height(),0,0,m_dibBkg.Width(),m_dibBkg.Height(),FALSE);
//标题(“QQ2009”)
m_dibCaption.AlphaTo(&m_dibBanner,8,5,0,0);
//装饰图案,即QQ所谓的“底纹”
m_dibTatoo.AlphaTo(&m_dibBanner,rc.right-m_dibTatoo.Width(),0,0,0);
//用户头像
m_dibUser.DrawTo(&m_dibBanner,7,25,0,0,m_dibUser.Width(),m_dibUser.Height());
//用户名及签名
m_dibUserBanner.DrawTo(&m_dibBanner,54,25,0,0,m_dibUserBanner.Width(),m_dibUserBanner.Height());
//系统按钮
//最小化
m_dibBtnRc.DrawTo(&m_dibBanner,rc.right - NCB_ENTIREWIDTH - NCB_SPACE,yPos,gRcBtn[0].x,gRcBtn[0].y, NCB_MINWIDTH,NCB_HEIGHT);
//关闭
m_dibBtnRc.DrawTo(&m_dibBanner,rc.right - NCB_CLOSEWIDTH - NCB_SPACE,yPos, gRcBtn[NCB_CLOSENORMAL].x,gRcBtn[NCB_CLOSENORMAL].y,NCB_CLOSEWIDTH,NCB_HEIGHT);
//最大化/还原
if(IsZoomed())
{
m_dibBtnRc.DrawTo(&m_dibBanner,rc.right - NCB_ENTIREWIDTH - NCB_SPACE + NCB_MINWIDTH,yPos,
gRcBtn[NCB_RESTORENORMAL].x,gRcBtn[NCB_RESTORENORMAL].y,NCB_MAXWIDTH,NCB_HEIGHT);
}
else
{
m_dibBtnRc.DrawTo(&m_dibBanner,rc.right - NCB_ENTIREWIDTH - NCB_SPACE + NCB_MINWIDTH,yPos,
gRcBtn[NCB_MAXNORMAL].x,gRcBtn[NCB_MAXNORMAL].y,NCB_MAXWIDTH,NCB_HEIGHT);
}
//绘制到窗口
//标题栏区域
m_dibBanner.Draw(hdc,0,0,0,0,rc.right,NCB_TITLEHEIGHT,rc.right,NCB_TITLEHEIGHT);
//底栏区域
m_dibBanner.Draw(hdc,0,rc.bottom - NCB_BOTTOMHEIGHT,0,NCB_TITLEHEIGHT,rc.right,
NCB_BOTTOMHEIGHT,rc.right,NCB_BOTTOMHEIGHT);
先把各素材绘制到内存图象m_dibBanner
//背景
m_dibBkg.StretchTo(&m_dibBanner,0,0,rc.right,m_dibBanner.Height(),0,0,m_dibBkg.Width(),m_dibBkg.Height(),FALSE);
//标题(“QQ2009”)
m_dibCaption.AlphaTo(&m_dibBanner,8,5,0,0);
//装饰图案,即QQ所谓的“底纹”
m_dibTatoo.AlphaTo(&m_dibBanner,rc.right-m_dibTatoo.Width(),0,0,0);
//用户头像
m_dibUser.DrawTo(&m_dibBanner,7,25,0,0,m_dibUser.Width(),m_dibUser.Height());
//用户名及签名
m_dibUserBanner.DrawTo(&m_dibBanner,54,25,0,0,m_dibUserBanner.Width(),m_dibUserBanner.Height());
//系统按钮
//最小化
m_dibBtnRc.DrawTo(&m_dibBanner,rc.right - NCB_ENTIREWIDTH - NCB_SPACE,yPos,gRcBtn[0].x,gRcBtn[0].y, NCB_MINWIDTH,NCB_HEIGHT);
//关闭
m_dibBtnRc.DrawTo(&m_dibBanner,rc.right - NCB_CLOSEWIDTH - NCB_SPACE,yPos, gRcBtn[NCB_CLOSENORMAL].x,gRcBtn[NCB_CLOSENORMAL].y,NCB_CLOSEWIDTH,NCB_HEIGHT);
//最大化/还原
if(IsZoomed())
{
m_dibBtnRc.DrawTo(&m_dibBanner,rc.right - NCB_ENTIREWIDTH - NCB_SPACE + NCB_MINWIDTH,yPos,
gRcBtn[NCB_RESTORENORMAL].x,gRcBtn[NCB_RESTORENORMAL].y,NCB_MAXWIDTH,NCB_HEIGHT);
}
else
{
m_dibBtnRc.DrawTo(&m_dibBanner,rc.right - NCB_ENTIREWIDTH - NCB_SPACE + NCB_MINWIDTH,yPos,
gRcBtn[NCB_MAXNORMAL].x,gRcBtn[NCB_MAXNORMAL].y,NCB_MAXWIDTH,NCB_HEIGHT);
}
//绘制到窗口
//标题栏区域
m_dibBanner.Draw(hdc,0,0,0,0,rc.right,NCB_TITLEHEIGHT,rc.right,NCB_TITLEHEIGHT);
//底栏区域
m_dibBanner.Draw(hdc,0,rc.bottom - NCB_BOTTOMHEIGHT,0,NCB_TITLEHEIGHT,rc.right,
NCB_BOTTOMHEIGHT,rc.right,NCB_BOTTOMHEIGHT);