duilib

Duilib定时器

匿名 (未验证) 提交于 2019-12-02 23:55:01
转载: https://www.zhaokeli.com/article/8262.html 问题描述 直接使用系统函数定义 参数 http://www.zhaokeli.com/article/1812.html 下面介绍在duilib中的使用方法 在duilib中使用时肯定要绑定到对应的窗口上,并且执行定时器里的方法时还得能访问这个类里面的其它成员方法等,实现这样的功能除啦使用消息处理应该也没有其它好的方法啦吧,如果创建线程来延时执行还得处理多线程数据传送的问题, 定时器使用方法 在需要计时的地方定义定时器,参数分别是窗口句柄,定时器id(记好后面要用到),间隔时间,定时器回调函数(留空(NULL)默认为处理窗口的 WM_TIMER 消息) SetTimer ( m_hWnd , 2019 , 1000 , NULL ); 定时器处理函数 1 LRESULT OnTimer ( UINT uMsg , WPARAM wParam , LPARAM lParam , BOOL & bHandled ); 2 LRESULT Toast :: OnTimer ( UINT uMsg , WPARAM wParam , LPARAM lParam , BOOL & bHandled ) 3 { 4 //如果是自己定义的计时器id时处理,因为同一个窗口可以定义很多个定时器 5 if (

WM_RBUTTONUP消息收不到问题

浪子不回头ぞ 提交于 2019-12-02 01:54:35
在Duilib中,当设置了Caption后,Duilib处理鼠标点击测试消息:WM_NCHITTEST 如上,即当鼠标点击是Caption区域,如果不是Button或者RichEdit的话,会返回HTCAPTION,即告诉WINDOWS我是非客户端区。 非客户端,用户可以用鼠标对窗口进行拖拽(相当于模拟了标题栏)。 此时,当用户鼠标点击时,你就得不到常规的WM_LBUTTONXXX 与 WM_RBUTTONXXX了 相反,你会得到WM_NCLBUTTONXXX 与 WM_NCRBUTTONXXX 因此,如果你想通过鼠标右键产生菜单的话,可以同时处理 case WM_RBUTTONUP: //leave it down case WM_NCRBUTTONUP: CreateMenu(); break; 更多的关于WM_NCHITTEST,可参考这篇文章 https://www.cnblogs.com/GnagWang/archive/2010/09/12/1824394.html 来源: https://www.cnblogs.com/xuhuajie/p/11724370.html

duilib的属性 大全

こ雲淡風輕ζ 提交于 2019-11-30 03:23:24
<Controls> <Window parent=""> <Attribute name="size" default="0,0" type="SIZE" comment="窗口的初始化大小,如(800,600)"/> <Attribute name="sizebox" default="0,0,0,0" type="RECT" comment="窗口可拖动改变窗口大小的边距,如(4,4,6,6)"/> <Attribute name="caption" default="0,0,0,0" type="RECT" comment="窗口可拖动的标题栏大小的边距,最后一个参数是指离上边框的距离,如(0,0,0,28)"/> <Attribute name="roundcorner" default="0,0" type="SIZE" comment="窗口圆角大小,如(4,4)"/> <Attribute name="mininfo" default="0,0" type="SIZE" comment="窗口最小大小,如(320,240)"/> <Attribute name="maxinfo" default="0,0" type="SIZE" comment="窗口最大大小,如(1600,1200)"/> <Attribute name="alpha" default="255

客户端GUI程序开发漫谈

白昼怎懂夜的黑 提交于 2019-11-29 19:28:19
这篇文章包含了这个领域的很多开源项目的介绍,还有我多年来的心血和汗水 去年夏天的时候,我 用QT做了一个小工具 后来还 用QT做了流程设计器 我把程序分享给 飞扬青云 之后,他甚至搞出来 一套QT的皮肤 来 说实在的,QT确实挺强大的, 如果你有一个项目,需要跨平台GUI开发,你又有一个C++团队的话, 那么做技术选型的时候,可以负责任的说,QT是不二之选 这时可能有人会提到 GTK+ , 我想说的是GTK+对windows平台的支撑力度实在是少的可怜 linux的版本已经到了3.16了 ,windows的版本才到3.0.6,整整差10个版本(我这里说的是GTK3) 而且大部分常见的控件在windows上都没有 来看看我在 一个开源项目上踩的坑 吧。 当然还有人可能提到 wxWidgets ,这玩意儿我没有深入研究过 只知道它是在原生图形API上再做的包装,想想windows API搞出来的窗口有多古板,还是算了。 类似的还有 iup ,跟wxWidgets的原理是一样的。 还有人直接用游戏库做GUI程序的,比如 nimx 和 nanovg nimx是基于 SDL2 图形引擎搞出来的GUI框架 我在nimx上踩到两个坑, 其中一个提交pull request给作者 ,作者也认了 第二个坑 就直接把我坑死了。 nanovg是基于 OpenGL 图形引擎搞出来的GUI框架。

duilib库分析3.DUILibxml配置

可紊 提交于 2019-11-28 20:43:10
我这里是借用网友colin3dmax整理的关于duilib的分析哈,感谢他的分享,我觉得很有必要贴出来让大家都学习观摩下 DUILibxml配置项 根节点 子类 属性 类型 Window |--------Image 图片信息 | o------name string | o------restype string | o------mask unsigned long# | |--------Font 字体信息 | o------name string | o------size long | o------bold bool | o------underline bool | o------default bool | |--------Default 默认Attribute属性 o------name string o------value string root(Window属性) o--size 窗体初始化大小 SIZE(int cx, int cy) o--sizebox 窗体区域 RECT(long left, long top, long right,long bottom) o--caption 窗体标题栏区域 RECT(long left, long top, long right,long bottom) o--roundcorner 圆角大小 SIZE

Duilib之源码分析

你。 提交于 2019-11-28 20:42:47
《duilib之源码分析》 1 stdAfx.h * lengthof(x) 计算数组长度宏 * MAX 两值最大 * MIN 两值最小 * CLAMP(x,a,b) x在a,b之间则取x否则取最小 2 UIBase * UI_WNDSTYLE_ 窗口风格属性 * UI_CLASSSTYLE_ 窗口类属性 * TRACE(LPCTSTR pstrFormat, ...) 功能 - 调试信息 参考 - 参考printf * TRACEMSG(UINT uMsg) 功能 - 将windows消息转化成其对应的宏名 uMsg - Windows消息ID 返回值 - 宏名(字符串) * class STRINGorID 功能 - 统一资源ID, 字符串类型和整型统一输出为字符串类型 * class CPoint 描述 - 点 函数 - CPoint(LPARAM lParam) //将消息中lParam转化成点 * class CSize 描述 - 矩形的宽和高 * class CRect 描述 - 矩形区域 函数 - void Empty() //设置left,right,top,bottom为零 void Join(const RECT& rc) //合并两个矩形产生一个包含两个矩形的新的矩形 void ResetOffset() //将矩形移动到left=0,top=0的位置

duilib库分析4.第二篇UIBase

流过昼夜 提交于 2019-11-28 20:42:44
DUiLib 源码分析 ——以UiLib 1.01版为分析目标 ——colin3dmax 分析于2011-6-16 19:44 ---------------------------------------------------------------------------------- 分析约定: private o------- 私有的成员变量或方法 protect x------- 受保护的成员变量或方法 public +------- 公开的成员变量或方法 ---------------------------------------------------------------------------------- 本篇分析一下源文件 UIBase.h/UIBase.cpp UILib的基础类的定义源文件 包括UI中常用宏的封装、代码调试宏、 绘图常用的各种数据结构,以及UILib中的窗体类等 UI里的宏 窗体样式宏 +---UI_WNDSTYLE_CONTAINER 容器样式,无任何样式 +---UI_WNDSTYLE_FRAME UI标准框架窗体样式(标题栏、边框、图标、标题、最大、最小按钮、关闭按钮) +---UI_WNDSTYLE_CHILD UI窗体子控件样式 +---UI_WNDSTYLE_DIALOG UI对话框窗体样式 扩展窗体样式宏 +---UI

Duilib中各个类的简单介绍

只谈情不闲聊 提交于 2019-11-28 20:42:38
DirectUI意为直接在父窗口上绘图(Paint on parent dc directly)。即子窗口不以窗口句柄的形式创建(windowless),只是逻辑上的窗口,绘制在父窗口之上。微软的“DirectUI”技术广泛的应用于Windows XP、Vista、Windows 7,如浏览器左侧的TaskPanel,控制面板导航界面,Media Player播放器,即时通讯工具MSN Messager等。 DirectUI好处在于可以很方便的构建高效、绚丽的、非常易于扩展的界面。国外如微软,国内如腾讯、百度等公司的客户端产品多采用这种方式来组织界面,从而很好的将界面和逻辑分离,同时易于实现各种超炫的界面效果如换色、换肤、透明等。 DirectUI可以理解为一个轻量级的WPF,可以让C++做出C#般绚丽的界面。目前国内做DirectUI皮肤库的公司主要有两家:第一家是UIPower(即Skin++的公司),网址 www.uipower.com ,其DirectUI产品网站 www.directui.com ,做的很专业;另一家是UIEASY,网址 www.uieasy.com ,一个轻量级皮肤库DSkinLite。但是,网上关于DirectUI的技术文章却很少;早在 6/26/2005,一个国外的程序员就已经写了一个开源的DirectUI例子

怎样配置duilib

一笑奈何 提交于 2019-11-28 20:42:29
duilib是一个免费的界面库,它可利用xml文件自定义界面元素,并且可以在商业项目中无偿使用。怎样在VS中配置duilib界面库呢?请看下面的介绍。 工具/原料 duilib 下载和编译duilib 1 下载并安装 SVN 客户端。 2 安装完成后,在要保存下载的 duilib 库的目录右击鼠标,选择 SVN Checkout。 3 在 SVN 界面框中填入下载地址,注意,要选择 387 这个版本。 4 在下载的文件中,用 VS 打开其中的 DuiLib.sln 工程文件。 5 在 VS 中的 DuiLib 项上右击鼠标,选择“设为启动项目”。 6 再点击 VS 菜单“生成”-“批生成”。 7 选择与 DuiLib 有关的四个项目(其余的是些示例,你也可以勾选编译看看效果),然后点击“生成”。 8 等待编译完成(编译过程中,有警告提示不要理会)。编译完成后,会在 bin 目录下生成四个 dll 。 9 现在,配置 duilib 库的准备工作就全部完成了。 END 配置duilib 1 用 VS 新建一个 Win32 Windows 类型的空项目。 2 在工程中点菜单“项目”-“属性”。 3 点击“配置属性” - “VC++目录”。 4 在其中的包含目录中添加下载的文件中 DuiLib 文件夹地址,在库目录中添加 Lib 文件夹地址。 5 这时,就可以使用 duilib

duilib教程之duilib入门简明教程17.事件处理和消息响应

痞子三分冷 提交于 2019-11-28 20:41:37
界面的显示方面就都讲完啦,下面来介绍下控件的响应。 前面的 教程 只讲了按钮和Tab的响应,即在Notify函数里处理。其实duilib还提供了另外一种响应的方法,即消息映射DUI_BEGIN_MESSAGE_MAP,可以将DUI_MSGTYPE_CLICK消息映射到指定的函数(比如OnClick),这和在Notify判断msg.sType是一样的效果,具体请参见duilib的RichListDemo。 先看看下面几段代码: DUI_BEGIN_MESSAGE_MAP(CPage1, CNotifyPump) DUI_ON_MSGTYPE(DUI_MSGTYPE_CLICK,OnClick) DUI_ON_MSGTYPE(DUI_MSGTYPE_SELECTCHANGED,OnSelectChanged) DUI_ON_MSGTYPE(DUI_MSGTYPE_ITEMCLICK,OnItemClick) DUI_END_MESSAGE_MAP() 复制代码 LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; BOOL bHandled = TRUE; switch (uMsg) { case WM_KEYDOWN: lRes = OnKeyDown(uMsg,