[摘要]CS_VREDRAW); return CWnd::CreateEx(WS_EX_STATICEDGE,pClassName, "Shadow window", WS_POPUP...
CS_VREDRAW);
return CWnd::CreateEx(WS_EX_STATICEDGE,pClassName, "Shadow window", WS_POPUP,
rect.left,rect.top,rect.right,rect.bottom, pParentWnd->GetSafeHwnd(),0,NULL);
}
void CShadowWnd::OnNcPaint()
{
// TODO: Add your message handler code here
CWindowDC dc(this);
CRect rc;
GetWindowRect(&rc);
rc.right-=rc.left;//width
rc.bottom-=rc.top;//height
rc.top=0;
rc.left=0;
m_bmpBrush.UnrealizeObject();
CBrush* OldBrush=dc.SelectObject(&m_bmpBrush);
//画底部阴影
dc.PatBlt(rc.left+SPOPUP_SHADOWWIDTH,rc.bottom-SPOPUP_SHADOWHEIGHT, rc.right-
SPOPUP_SHADOWWIDTH,SPOPUP_SHADOWHEIGHT,PATCOPY);
//画右边阴影
dc.PatBlt(rc.right-SPOPUP_SHADOWWIDTH,rc.top+SPOPUP_SHADOWHEIGHT, SPOPUP_SHADOWWIDTH,
rc.bottom,PATCOPY);
dc.SelectObject(OldBrush); //restore old brush
CBrush* pBrush=CBrush::FromHandle(GetSysColorBrush(COLOR_WINDOWFRAME));
rc.right-=SPOPUP_SHADOWWIDTH;
rc.bottom-=SPOPUP_SHADOWHEIGHT;
dc.FrameRect(rc,pBrush);//画边框
// Do not call CWnd::OnNcPaint() for painting messages
}
void CShadowWnd::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CRect rect;
GetClientRect(&rect);
rect.left+=5;
rect.top+=5;
rect.right-=SPOPUP_SHADOWWIDTH;
rect.bottom-=SPOPUP_SHADOWHEIGHT;
dc.SetTextColor(RGB(0,0,255));//设置显示文本颜色
dc.DrawText(m_sShowText,rect,DT_WORDBREAK
关键词:完成带阴影弹出的窗口