Win10无边框对话框加阴影
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Win10无边框对话框加阴影相关的知识,希望对你有一定的参考价值。
网上给无边框加阴影就是那个著名的类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无边框对话框加阴影的主要内容,如果未能解决你的问题,请参考以下文章