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);
}


猜你喜欢

转载自blog.51cto.com/9233403/2118271
今日推荐