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无边框对话框加阴影的主要内容,如果未能解决你的问题,请参考以下文章

winform 如何实现边框的阴影效果,就像360那种的,四周都有阴影。

winform 怎么实现无边框阴影

如何给Excel加水印背景

如何让winform有边框但没有标题栏?

网页 div边框加圆角以及阴影

在win32中更改无边框窗口的颜色