Win10無邊框對話框加陰影
阿新 • • 發佈:2018-05-19
窗口陰影網上給無邊框加陰影就是那個著名的類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); }
Win10無邊框對話框加陰影