Duilib官方入门文档创建的窗口为什么是圆角矩形

       由于项目原因,有幸接触到Duilib,在使用了一段时间之后,不得不承认它是一个非常优秀的开源界面库。同时在学习和使用的过程中也遇到了很多的问题,仅以此篇作为开端记录下来,也算是为开源世界做一些贡献。

         相信很多新手都是通过官方自带的《Duilib 入门文档》入门的,其中创建窗口讲述了如何去除标题栏或者是非客户区。在HandleMessage添加了如下代码:

else if( uMsg == WM_NCACTIVATE ) {
if( !::IsIconic(m_hWnd) ) {
return (wParam == 0) ? TRUE : FALSE;
}
}
else if( uMsg == WM_NCCALCSIZE ) {
return 0;
}
else if( uMsg == WM_NCPAINT ) {
return 0;
}

此时窗口变成这样:


       对,你没有看错,它的“头”为什么是圆的,看起来很不爽有木有。此时别慌,其实这个问题呢是窗口属性设置造成的,大家是否还记得XP或者win7系统“标题栏”就是圆角的。而我们上面去除标题栏的方式仅仅是屏蔽系统绘制的消息,但是并没有去除这种窗口风格,现在真相大白了哈哈,设置窗口风格属性就好了嘛,在窗口初始化前添加如下代码:

LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);
styleValue &= ~WS_CAPTION;
::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);

上述代码去除了窗口的标题栏属性WS_CAPTION,马上编码看一下效果吧:


这才是去“头”之后真实的模样嘛!

小结这件事情告诉我们解决问题一定要考虑全面,不然就会 顾此失彼,浪费自己很多的时间,当然有时候走弯路也会有意想不到的收获嘛!在此感谢Duilib的作者,他早就替我们这些小白考虑好了,如果你的窗口是继承WindowImplBase创建的,则不会有这样的问题。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值