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. DuiVision开发教程(14)-DUI控件基础类

    DuiVision所有控件的基类是CControlBase类. CControlBase的属性如下表: 属性名 类型 说明 show 1|0 控件是否可见 disable 1|0 控件是否被禁用 po ...

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

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

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

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

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

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

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

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

  6. Xamarin iOS教程之页面控件

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

  7. [译][Tkinter 教程10] Text 控件

    已获原作者授权. 原系列地址: Python Tkinter 简介及简例 Text 控件用来显示多行文本. Tkinter 的 Text 控件很强大, 很灵活, 可以实现很多功能. 虽然这个控件的主要 ...

  8. [译][Tkinter 教程02] Message 控件

    已获原作者授权. 原系列地址: Python Tkinter Message 控件 Message 控件用来展示一些文字短消息. Message 和 Label 控件有些类似, 但在展示文字方面比 L ...

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

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

最新文章

  1. 云炬60s看世界20211117
  2. 四、Netty 实现心跳机制与断线重连
  3. Failed to issue method call: Unit mysql.service failed to load: No such file or directory解决的方式...
  4. oracle安装后新建数据库实例及配置
  5. 结对-贪吃蛇游戏-需求分析
  6. jmeter导出测试报告
  7. 深度讲解如何发挥出文章title标题的作用
  8. MySQL有几部分_数据库系统有哪几部分组成?
  9. 如何运用MATLAB实现K-MEANS聚类分析
  10. Java线程池与Lambda表达式
  11. 路由器WiFi密码更改及隐藏操作
  12. 32bit转64bit,使用anaconda实现python64位与32位共存【多次踩雷后的正确解决方法】
  13. 什么是GRAY色彩空间
  14. ios java语言_iOS平台的App主要使用哪种语言进行开发? Java|C++|Python|Swift
  15. 回避与趋近性负性人格特质对应激心血管反应模式
  16. PTA基础题考点汇总
  17. Android中SurfaceView使用详解
  18. 32位真彩色与24位真彩色区别
  19. 基于 AVOS Cloud 的 Android 应用程序快速开发简介
  20. python保存数据型变量_Python基础学习笔记(一)变量与数据类型

热门文章

  1. WebLogic下WAR方式部署获取文件路径问题
  2. HDFS的文件副本机制
  3. 数据库-日期计算-获取年月日
  4. 函数的参数-在函数内部使用方法修改可变参数会影响外部实参
  5. SpringCloud与dubbo的区别
  6. Nginx_日志文件讲解
  7. mysql触发器新元组_MySQL触发器-条件触发器语法
  8. 验证哥德巴赫猜想:任何一个大于6的偶数均可表示为2个素数之和
  9. 基于matplotlib的数据可视化 - 热图imshow
  10. MySQL拷贝表的几种方式