Duilib教程-非DUI控件
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控件的更多相关文章
- 2013 duilib入门简明教程 -- 自绘控件 (15)
在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如 ...
- duilib教程之duilib入门简明教程13.复杂控件介绍
首先将本节要介绍的控件全部拖到界面上,并调整好位置,如图: 然后将Name属性改成其他名字, 不能是[控件名+UI+数字]这种,因为这是DuiDesigner默认的名字,它不会实际写 ...
- 基于wke封装的duilib的webkit浏览器控件,可以c++与js互交,源码及demo下载地址
转载请说明原出处,谢谢~~ 前些日子用wke内核封装了duilib的webkit浏览器控件,好多群里朋友私聊我希望可以我公布源码,今天把这个控件的源码和使用demo公布.其实这个控件封装起来没什么难度 ...
- 《zw版·Halcon-delphi系列原创教程》halconxlib控件列表
<zw版·Halcon-delphi系列原创教程>halconxlib控件列表 Halcon v11.01版,com控件,安装后,共有75个控件, 不过最重要的控件,只有两个,T ...
- Xamarin iOS教程之页面控件
Xamarin iOS教程之页面控件 Xamarin iOS 页面控件 在iPhone手机的主界面中,经常会看到一排小白点,那就是页面控件,如图2.44所示.它是由小白点和滚动视图组成,可以用来控制翻 ...
- Xamarin XAML语言教程构建ControlTemplate控件模板 (四)
Xamarin XAML语言教程构建ControlTemplate控件模板 (四) 2.在页面级别中构建控件模板 如果开发者要在页面级别中构建控件模板,首先必须将ResourceDictionary添 ...
- Xamarin XAML语言教程构建ControlTemplate控件模板 (三)
Xamarin XAML语言教程构建ControlTemplate控件模板 (三) (3)打开MainPage.xaml.cs文件,编写代码,实现主题的切换功能.代码如下: using System; ...
- Xamarin XAML语言教程构建ControlTemplate控件模板 (二)
Xamarin XAML语言教程构建ControlTemplate控件模板 (二) (2)打开MainPage.xaml文件,编写代码,将构建的控件模板应用于ContentView中.代码如下: &l ...
- Xamarin XAML语言教程构建ControlTemplate控件模板
Xamarin XAML语言教程构建ControlTemplate控件模板 控件模板ControlTemplate ControlTemplate是从Xamarin.Forms 2.1.0开始被引入的 ...
随机推荐
- 创建win32窗口
#include <windows.h> LRESULT CALLBACK WinProc(HWND,UINT,WPARAM,LPARAM); int WINAPI WinMain(HIN ...
- Navicat Premium如何打开SQL文件.MDF和.LDF文件
相信大家再装SQL Server时都会遇到一件很头疼的事情--装完SQL server之后发现没有启动程序.没有经验的会以为SQL SERVER安装失败了于是选择重装.可是呵呵,重装了4,5次还是一样 ...
- Java环境变量设置辅助工具
安装完JDK之后,很容易忘了设置系统的环境变.最近发现一个设置JDK的小工具,非常简单,推荐给大家: 下载地址:http://files.cnblogs.com/eastson/JavaPathSet ...
- (七)Oracle学习笔记—— 游标
1.游标简介 游标用来处理从数据库中检索的多行记录(使用SELECT语句).利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集. 为了处理SQL语句,Oracle将在内存中分配一个区域,这就是 ...
- HTTPS证书申请相关笔记
申请免费的HTTPS证书相关资料 参考资料: HTTPS 检测 苹果ATS检测 什么是ECC证书? 渠道2: Let's Encrypt 优点 缺点 Let's Encrypt 的是否支持非80,44 ...
- OpenJudge百炼习题解答(C++)--题4074:积水量
题: 总时间限制: 1000ms 内存限制:65536kB 描写叙述 凹凸不平的地面每当下雨的时候总会积水.如果地面是一维的.每一块宽度都为1,高度是非负整数.那么能够用一个数组来表达一块 ...
- unity shader(二)
- [转]Linux(Ubuntu)下如何安装JDK
转自:http://www.cnblogs.com/savagemorgan/p/3650926.html 注:这篇博客里面有两个问题 1.解压的时候不用sudo,mv的时候不用sudo,我的安装路径 ...
- java @override 报错处理
转载自:http://blog.sina.com.cn/s/blog_9c7605530101kl9r.html 一.java @override 报错处理 做项目的时候,同事那边电脑上编译通过的ja ...
- android怎样写一个自己定义的dialog能够在Title的位置弹出来
先上效果图: Title的Layout为: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andr ...