网上给无边框加阴影就是那个著名的类WndShadow,在XP上直接使用,很方便。但是Win10上直接用没有效果。
将对话框的style设为popup,title bar设为false。然后添加如下代码:
int CMFCApplication1Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct) { //初始化阴影窗口 if (CDialogEx::OnCreate(lpCreateStruct) == -1) return -1; LONG styleValue = ::GetWindowLong(m_hWnd, GWL_STYLE); styleValue &= ~(WS_CAPTION | WS_EX_CLIENTEDGE | WS_BORDER); ::SetWindowLong(m_hWnd,GWL_STYLE,styleValue|WS_CLIPSIBLINGS|WS_CLIPCHILDREN); WndShadow.Create(m_hWnd); WndShadow.SetSize(0); WndShadow.SetPosition(0, 5); return TRUE; }
void CMFCApplication1Dlg::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp) { // TODO: 在此添加消息处理程序代码和/或调用默认值 lpncsp->rgrc[0].top -= 7;//上边栏 // lpncsp->rgrc[0].bottom = 0;//底边栏 // lpncsp->rgrc[0].left = 0;//左边栏 // lpncsp->rgrc[0].right = 0;//右边栏 CDialogEx::OnNcCalcSize(bCalcValidRects, lpncsp); }
原文地址:http://blog.51cto.com/9233403/2118271
时间: 2024-10-15 16:20:33