我之前代码都是照着官方那个Duilib入门文档.doc来学习的。但是遇到一个问题,虽然他隐藏了windows的自带标题栏,可以自己绘画一个标题栏了,但是在这个标题栏下方,用力乱戳,就可能把系统自带的,最小化,最大化,关闭按钮戳出来。如下图:

我问了群里的朋友,都说可能是WM_NCHITTEST的问题。于是我去handle里多加了一个if判断

else if( uMsg == WM_NCHITTEST) {return 0;
}

结果虽然解决了问题,但是我自己的按钮都失效了。通过debug发现,只要鼠标进入我们程序界面,就会触发WM_NCHITTEST。所以return掉太暴力了。

后来在一个博客里发现了一个解决方案http://tunps.com/ws_caption-cause-duilib-program-title-bar-cannot-hide

LRESULT CMainDlg::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);styleValue &= ~WS_CAPTION;::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);//.....
}

我试着去写了个OnCreate无效。后来把代码试着改了下,在创建窗体后,就对窗体进行set,生效了。

官方教程里的创建代码如下:

CFrameWindowWnd* pFrame = new CFrameWindowWnd();if( pFrame == NULL ) return 0;pFrame->Create(NULL, _T("测试"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);pFrame->ShowWindow(true);

我改了一下改成这样:

CFrameWindowWnd* pFrame = new CFrameWindowWnd();
if( pFrame == NULL ) return 0;
pFrame->Create(NULL, _T("测试"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
LONG styleValue = ::GetWindowLong(*pFrame, GWL_STYLE);
styleValue &= ~WS_CAPTION;
::SetWindowLong(*pFrame, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
pFrame->CenterWindow();
pFrame->ShowWindow(true);

运行后,果然一切正常了。在此代码基础上,我觉得既然是set,那么原来create的时候就应该可以控制这两个参数。跟上面create代码一对比,我就做了一个尝试,把这两个属性替换掉,改成如下:

CFrameWindowWnd* pFrame = new CFrameWindowWnd();
if( pFrame == NULL ) return 0;
pFrame->Create(NULL, _T("测试"), WS_CLIPSIBLINGS, WS_CLIPCHILDREN);
pFrame->CenterWindow();
pFrame->ShowWindow(true);

官方文档创建时的参数是UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE把他们换成WS_CLIPSIBLINGS, WS_CLIPCHILDREN就可以了

运行后一切正常,很努力的戳也戳不出那些隐藏按钮了。

由于整个没有官方文档,本人也不太可能去慢慢阅读源码,所以这样的代码试出来的,多少以后可能存在隐患。群里很多朋友都是靠读官方的demo,看其他朋友写的demo来学习的,的确没有其他快捷有效途径,但是现在就只能先这样了。

转载于:https://www.cnblogs.com/duguxue/p/3818243.html

DuiLib学习笔记5——标题栏不能正常隐藏问题相关推荐

  1. Duilib学习笔记《05》— 消息响应处理

    在Duilib学习笔记<04>中已经知道了如何将窗体显示出来,而如何处理窗体上的事件.消息呢? 一. 系统消息 窗体显示的时候我们就已经说了,窗体是继承CWindowWnd类的,对于窗体的 ...

  2. Duilib学习笔记《04》— 窗体显示

    在前面已经了解了duilib控件以及界面布局相关内容,接下来就要考虑该如何将xml中描述的布局通过界面展现出来.实际上在 Duilib学习笔记<01> 中我们已经简单提到过基本的流程及元素 ...

  3. Duilib学习笔记《03》— 控件使用

    在前面已经对duilib有个一个基本的了解,并且创建了简单的空白窗体.这仅仅只是一个开始,如何去创建一个绚丽多彩的界面呢?这就需要一些控件元素(按钮.文本框.列表框等等)来完善. 一. Duilib控 ...

  4. duilib学习笔记

    前段时间对皮肤引擎比较感兴趣,于是在VS第一人称快的无法直视的dot大神推荐下,看了一个小巧又好用的皮肤引擎:duilib. 1. duilib简介 duilib是一个开源的DirectUI界面库,简 ...

  5. Mr.J-- jQuery学习笔记(十四)--动画显示隐藏

    eq()函数 定义和用法 :eq() 选择器选取带有指定 index 值的元素. index 值从 0 开始,所有第一个元素的 index 值是 0(不是 1). 经常与其他元素/选择器一起使用,来选 ...

  6. Vue.js学习笔记(三):隐藏a标签鼠标悬浮状态下浏览器左下角出现的链接地址

    前言 当a标签悬浮时浏览器左下角会出现链接地址,为了隐藏链接地址,除了使用用点击事件代替以外,我们还可以一次性解决页面所有a标签悬浮出现链接的问题. mounted() {this.deleteMsg ...

  7. 四、pink老师的学习笔记——元素的显示与隐藏

    1. 元素的显示与隐藏 目的 让一个元素在页面中消失或者显示出来 场景 类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现! 1.1 display 显示(重点) display ...

  8. 立创eda专业版学习笔记(3)(隐藏部分飞线)

    又到了喜闻乐见的隐藏gnd飞线环节,我发现这个专业版的操作和标志版不一样,我想试一试这个标题的搜索结果,发现有用的结果还是很少,于是我也随便总结了一下,算是添砖加瓦吧. 原来的飞线是这个样子的: 现在 ...

  9. DuiLib学习笔记1.编译运行demo

    c++中皮肤问题比较麻烦,MFC自带的太难用.DirectUI界面库就比较强大了,之前像skin++之类的基于DirectUI收费昂贵.DuiLib是基于DirectUI的界面库,可以将用户界面和处理 ...

最新文章

  1. 通过 .gitlab-ci.yml配置任务-官方配置文件翻译
  2. Office2016打开doc字符间距过小
  3. 面试官问你“有什么问题问我吗?”,你该如何回答?
  4. 部署superset_ubuntu16下部署apache superset趟坑指南(内有福利)
  5. php 派生类 构造,C++派生类的构造函数和析构函数
  6. wireshark抓包工具的使用及分析
  7. java synchronizer_Java同步框架AbstractQueuedSynchronizer详解
  8. FIFO、UART、ALE解释
  9. Ubuntu在docker容器中安装TensorFlow-1.5
  10. ASP.NET程序中 抛出Thread was being aborted. 异常(转)
  11. TAP-Win32 Adapter OAS“的网络适配器删除后总是出现(kms激活器及win10激活)
  12. 丁火生于未月命理分析_日主丁、未月出生五行喜用分析-丁日未月生《晶灵八字算命》...
  13. iOS设备、Icon、LaunchImage、图片分辨率
  14. Java--枚举类型(枚举类型介绍 定义枚举类型 枚举类型的使用 枚举类型的注意事项 遍历枚举项)
  15. 云计算运维工程师前景怎么样?
  16. excel仪表盘_免费的Excel仪表板工具
  17. 武侠小说阅读记录 2009-02-18 21:14
  18. 幸福地生活 -哈佛幸福公开课
  19. 基于cruise的混合动力商用车仿真,P2并联混动仿真模型可实现并联混动汽车动力性经济性仿真
  20. 什么是路由模式通配符?

热门文章

  1. 2013年上半年全国计算机技术与软件专业技术资格(水平)考试工作安排
  2. 18.DataGrid内绑定ComboBox和ListBox以及取值
  3. 第四周编程总结--助教
  4. Oracle Data Guard 主库 归档文件 删除策略 .
  5. 理科的至尊思想:进制之间的转换
  6. 代码设置按钮样式的方法
  7. equals方法和==的区别--用实例简单说明
  8. ansible role中常代码块
  9. python之迭代锁与信号量
  10. python+pywinauto之PC端自动化一