DuiLib无边框窗口在win10下的最小化/还原特效消失的问题,真正的无边框窗口实现

12 篇文章 0 订阅
8 篇文章 0 订阅

不爱啰嗦,直接上代码

int ProcNCCalcSize(UINT message, WPARAM wParam, LPARAM lParam)
{
	int xFrame = 0; /*左右边框的厚度*/
	int yFrame = 0; /*下边框的厚度*/
	int nTHight = 0; /*标题栏的高度*/
	NCCALCSIZE_PARAMS * p;
	RECT * rc;


	RECT aRect;
	RECT bRect;
	RECT bcRect;

		

	if (wParam == TRUE)
	{
		p = (NCCALCSIZE_PARAMS *)lParam; /*矩形是B A AC,目标是改成BC B A*/


		CopyRect(&aRect, &p->rgrc[1]);
		CopyRect(&bRect, &p->rgrc[0]);


		//修正最大化时无边框窗口客户区的偏移
		if (bRect.left < 0)
		{
			bRect.right += bRect.left;
			bRect.left = 0;
		}

		if (bRect.top < 0)
		{
			bRect.bottom += bRect.top;
			bRect.top = 0;
		}

		/*指定BC的矩形的位置*/
		bcRect.left = bRect.left + xFrame;
		bcRect.top = bRect.top + nTHight;
		bcRect.right = bRect.right - xFrame;
		bcRect.bottom = bRect.bottom - yFrame;


		/*各个矩形归位*/
		CopyRect(&p->rgrc[0], &bcRect);
		CopyRect(&p->rgrc[1], &bRect);
		CopyRect(&p->rgrc[2], &aRect);
	}
	else
	{
		rc = (RECT *)lParam;


		rc->left = rc->left + xFrame;
		rc->top = rc->top + nTHight;
		rc->right = rc->right - xFrame;
		rc->bottom = rc->bottom - yFrame;
	}
	return GetLastError();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值