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

原文地址:http://blog.51cto.com/9233403/2118271

时间: 2024-10-15 16:20:33

Win10无边框对话框加阴影的相关文章

无边框对话框拖动改变大小的实现总结

相同是项目遇到的问题,要求是无边框的对话框要实现鼠标的拖动改变大小.无边框对话框跟有边框的实现肯定不一样喽. 我上网搜到一种方法是: 须要处理下面这三个消息: WM_NCHITTEST  WM_SETCURSOR  WM_NCLBUTTONDOWN  消息处理函数: UINT CXXXDlg::OnNcHitTest(UINT nHitTest, CPoint point) { CRect rect; GetWindowRect(&rect); if(point.x <= rect.left

无边框对话框的缩放

1.        添加WM_NCHITTEST消息 2.        设置对话框属性System Menu 为False. 如果不设置添加完代码以后对话框边框出现了箭头,但是窗口大小是固定的. 3.        添加代码 LRESULT CDialogZoomDlg::OnNcHitTest(CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 //无边框缩放 //这里是防止在最大化的时候能缩放窗口(在没有WS_THICKFRAME风格的情况下需要这样

MFC无边框对话框移动

当窗口确定鼠标位置时,Windows向窗口发送WM_NCHITTEST消息,可以处理该消息,使得只要鼠标在窗口内,Windows便认为鼠标在标题条上.这需要重载CWnd类处理WM_NCHITTEST消息的OnNcHitTest函数,在函数中调用父类的该函数,如果返回HTCLIENT,说明鼠标在窗口客户区内,使重载函数返回HTCAPTION,使Windows误认为鼠标处于标题条上. 当用户在窗口客户区按下鼠标左键时,使Windows认为鼠标是在标题条上,即在处理WM_LBUTTONDOWN消息的处

Qt 无边框窗体改变大小 完美实现(全部自己实现)

近期,做项目用到无边框窗体,令人蛋疼的是无边框窗体大小的改变要像右边框那样,上下左右四周,而且要流畅. 网上也找了些代码,发现居然还要连接到windows事件,这显然不合常理,后来自己新建了demo,写了一个小时,问题太多了,扔一边先不管了. 今天需要改进UI界面,没办法了,重新整理了下思路,没想到做出来了.下面来分享下实现的过程,也许是菜鸟专栏,高手勿喷~ 1.首先大家要了解各九宫格的概念 一个窗体可以被划分为上.下.左.右.左上.左下.右上.右下.中间,除了中间部分,其他都需要写程序处理.

Qt 无边框窗体改变大小 完美实现

近期,做项目用到无边框窗体,令人蛋疼的是无边框窗体大小的改变要像右边框那样,上下左右四周,而且要流畅. 网上也找了些代码,发现居然还要连接到windows事件,这显然不合常理,后来自己新建了demo,写了一个小时,问题太多了,扔一边先不管了. 今天需要改进UI界面,没办法了,重新整理了下思路,没想到做出来了.下面来分享下实现的过程,也许是菜鸟专栏,高手勿喷~ 1.首先大家要了解各九宫格的概念 一个窗体可以被划分为上.下.左.右.左上.左下.右上.右下.中间,除了中间部分,其他都需要写程序处理.

android 仿小米icon处理,加阴影和边框

本人自己在做一个launcher,所以需要处理icon,加阴影和边框等.这只是一种处理方法,其他的处理方法类似. 源代码: https://github.com/com314159/LauncherIconMaskEffect 效果图: 核心思想: 1. 绘制边框时,先取原图片的颜色,再根据颜色绘制边框,加上了渐变效果 2.添加阴影其实非常简单,只是加了一张背景图片 android 仿小米icon处理,加阴影和边框,布布扣,bubuko.com

MFC小知识一:将对话框设置为无边框无标题栏初始最大化样式

今天公司新开始的一个项目.界面模式为无边框无标题栏初始最大化样式.其实本来可以直接在属性里面将默认的Resizing换成none就可以了,那么我想如何用代码来实现呢?于是就百度了一下.找到了两种方式,但其实两种方式思想是一样的.即修改样式--ModifyStyle.直接将以下代码加在OnInitDialog()即可实现. 第一种: 1 // 去掉标题栏 2 ModifyStyle(WS_CAPTION, 0); 3 // 去掉边框 4 ModifyStyleEx(WS_EX_DLGMODALFR

无边框窗体 timer控件

一.无边框窗体1.控制按钮如何制作 MouseEnter-鼠标移入的时候发生的事件 pictureBox1.BackgroundImage = Image.FromFile(Application.StartupPath + "\\..\\..\\images\\btn_close_highlight.png"); MouseLeave-鼠标移出的时候发生的事件 pictureBox1.BackgroundImage = Image.FromFile(Application.Start

无边框窗体、用户控件、Timer控件

一.无边框窗体1 最大化.最小化以及关闭按钮制作 实际上就是更换点击前.指向时.点击时的图片 (1)将图片放在该文件夹的Debug中, 获取图片的路径 Application.StartupPath + "\\图片名.类型"(2)若是放在该文件夹的中,Application.StartupPath + "\\..\\..\\images\\图片名.类型" \..\文件夹名称... 向上翻一个文件夹,上面的第一个\是转义 pictureBox2.BackgroundI