完美解决VC++ 自绘标题栏阻止系统进行重绘(出现最大化,最小化,关闭)

一直以来,在自绘标题栏一直没有一个完美的方法。当然清除标题栏,完全自己重绘也是可以的。但是失去了窗口本身的一些特性。

本人最近正好一直在研究这方面,结果也遇到了此难题。不过最终还是解决了,现在把方法共享出来分享。

 

第一步:重载OnNcHitTest 全部返回标题栏操作。

 

UINT CXXDialog::OnNcHitTest( LONG x, LONG y )
{
 LRESULT lRet = CDialog::OnNcHitTest(x,y);

 //屏蔽消息

 return HTCAPTION;
}


 

第二步:

void CXXXDialog::OnNcLButtonDown( UINT nHitTest, CPoint pt )

{

 //如果是自己需要处理鼠标按下区域,进行处理,不在自己处理的范围,全部执行下边这句

 if(....pt .....)

{

 .......

 return 0;

}

 SendMessage(WM_SYSCOMMAND,0xF012,0);  

}


 

 

第三步:

void CXXXDialog::OnNcPaint()

{

 //进行非客户区的重绘代码。

}


 

经过这三步实现后,你再也看不见系统强行重绘标题栏了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值