DUILIB并不是真正的DUI,至少有部分控件不是完全DUI的。其实包括:

1.EDIT.

它的实现原理是,CEditUI包含一个窗口CEditWnd,流程如下:

1)鼠标单击,创建窗口见 EditUI.cpp第217行,在第223行有创建的代码:

m_pWindow = new CEditWnd();
ASSERT(m_pWindow);
m_pWindow->Init(this);

2)失去焦点时,删除自己,见EditUI.cpp第103行和第131行,

LRESULT CEditWnd::OnKillFocus(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
LRESULT lRes = ::DefWindowProc(m_hWnd, uMsg, wParam, lParam);
PostMessage(WM_CLOSE);
return lRes;
}

在这里,我们也注意到了,它并没有给父窗口发送 KillFocus消息,只是简单地关闭自己。

2.RICHEDIT

这个控件稍复杂,我也没仔细看,不过大概知道它是使用COM组件的东东,自己实现SCROLL_BAR。有兴趣的同学可以研究一下。

3.COMBOBOX

这时的非DUI部分主要是指弹出来的下拉框,它是使用一个HWND,然后这个HWND使用DUI的方式进行实现。它的实现方式与EDIT类似。

这个控件也有BUG,就是,下拉框弹出来时,滚动鼠标滚轮时,下拉框就自动消失了,相当于它并不支持鼠标滚轮。

最后,当然严格说起来,FLASH、WEBBROWSER、ACTIVEX等控件都不属于纯DUI控件,不过实现难度实现太大,用现成的就好了。不过WEBBROWSER实在不应该使用微软的WEBBROWSER控件,因为微软的控件实在是弱爆了,对HTML各种不支持,包括CSS、JAVASCRIPT,更别提HTML5了。可以考虑将 WEBKIT或是火狐加入到里面来,如此的话,对WEB的支持是相当完美了。

PS:

最近一直在搞手机软件,没时间更新博客。

这里又在建房子,无意中把我网线砸断了,上不了网,于是乎终于有时间写博客了。

我换了电信的网络,然后发现居然上不了Github了。

我换了WIN8.1的系统,然后发现居然装不了VM了,还有一堆绿色软件用不了了。

《论语》读了一年半了都没读完,我勒了个去。。。

真是诸事不顺啊。

Duilib教程-非DUI控件的更多相关文章

  1. 2013 duilib入门简明教程 -- 自绘控件 (15)

        在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如 ...

  2. duilib教程之duilib入门简明教程13.复杂控件介绍

    首先将本节要介绍的控件全部拖到界面上,并调整好位置,如图:  然后将Name属性改成其他名字,         不能是[控件名+UI+数字]这种,因为这是DuiDesigner默认的名字,它不会实际写 ...

  3. 基于wke封装的duilib的webkit浏览器控件,可以c++与js互交,源码及demo下载地址

    转载请说明原出处,谢谢~~ 前些日子用wke内核封装了duilib的webkit浏览器控件,好多群里朋友私聊我希望可以我公布源码,今天把这个控件的源码和使用demo公布.其实这个控件封装起来没什么难度 ...

  4. 《zw版·Halcon-delphi系列原创教程》halconxlib控件列表

    <zw版·Halcon-delphi系列原创教程>halconxlib控件列表 Halcon v11.01版,com控件,安装后,共有75个控件,      不过最重要的控件,只有两个,T ...

  5. Xamarin iOS教程之页面控件

    Xamarin iOS教程之页面控件 Xamarin iOS 页面控件 在iPhone手机的主界面中,经常会看到一排小白点,那就是页面控件,如图2.44所示.它是由小白点和滚动视图组成,可以用来控制翻 ...

  6. Xamarin XAML语言教程构建ControlTemplate控件模板 (四)

    Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添 ...

  7. Xamarin XAML语言教程构建ControlTemplate控件模板 (三)

    Xamarin XAML语言教程构建ControlTemplate控件模板 (三) (3)打开MainPage.xaml.cs文件,编写代码,实现主题的切换功能.代码如下: using System; ...

  8. Xamarin XAML语言教程构建ControlTemplate控件模板 (二)

    Xamarin XAML语言教程构建ControlTemplate控件模板 (二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于ContentView中.代码如下: &l ...

  9. Xamarin XAML语言教程构建ControlTemplate控件模板

    Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的 ...

随机推荐

  1. Android Exception 13(Can't create handler inside thread that has not called Looper.prepare())

    10-12 17:02:55.500: E/AndroidRuntime(28343): FATAL EXCEPTION: Timer-2 10-12 17:02:55.500: E/AndroidR ...

  2. 关于DevOps你必须知道的11件事

    转自:http://www.infoq.com/cn/articles/11devops 关于作者 Gene Kim在多个角色上屡获殊荣:CTO.研究者和作家.他曾是Tripwire的创始人并担任了1 ...

  3. 【Shiro】Apache Shiro架构之自定义realm

    [Shiro]Apache Shiro架构之身份认证(Authentication) [Shiro]Apache Shiro架构之权限认证(Authorization) [Shiro]Apache S ...

  4. 360极速浏览器无法正确getHours

    开发了一个显示时间的功能. 功能是这样的,首先从数据库中读取时间,然后显示到前端页面上. 数据库中:2017-08-10 14:25:35.867 前端显示:2017-08-10T14:25:35.8 ...

  5. IE浏览器右键菜单分享扩展

    (如果本页面没有自动下载,请点这里下载) IE浏览器分享工具安装步骤:1.发起下载请求后,屏幕上会弹出文件保存对话框,将文件保存到您电脑本地的磁盘中 2.双击刚才下载的安装文件,将JiaThis_Sh ...

  6. STL容器分析--queue

    queue,顾名思义,是指队列.满足先进先出的原则.

  7. 冻结 锁定 固定 行 列 表头 抬头 html table jquery 全兼容常见浏览器

    转:http://www.cnblogs.com/sorex/archive/2011/06/30/2093499.html <!DOCTYPE html PUBLIC "-//W3C ...

  8. JUC组件扩展(二)-JAVA并行框架Fork/Join(一):简介和代码示例

    一.背景 虽然目前处理器核心数已经发展到很大数目,但是按任务并发处理并不能完全充分的利用处理器资源,因为一般的应用程序没有那么多的并发处理任务.基于这种现状,考虑把一个任务拆分成多个单元,每个单元分别 ...

  9. atitit.提升研发效率的利器---重型框架与类库的区别与设计原则

    atitit.提升研发效率的利器---重型框架与类库的区别与设计原则 1. 框架的意义---设计的复用 1 1.1. 重型框架就是it界的重武器. 1 2. 框架 VS. 库 可视化图形化 1 2.1 ...

  10. Vivado的helloword程序:软件工程部分

    建立工程 Export结束后,会自动启动SDK.界面如下.可以看到工程浏览器Project Explorer中已经有一个硬件平台hw_platform_0,里面有一系列配置和初始化文件.不要修改这些文 ...