DuiLib(三)——控件消息】的更多相关文章

上一篇讲了控件创建,这篇说说控件消息.directui的中心思想是在真实窗口之上画出所有控件,那这些控件是如何获取各自消息的? 通过第一篇的示例可以看到窗口消息的传递过程: CWindowWnd::__WndProc CWindowWnd::HandleMessage(CFrameWindowWnd类覆盖此函数) CPaintManagerUI::MessageHandler 消息最终传递到CPaintManagerUI::MessageHandler中,以WM_LBUTTONDOWN消息为例,…
问题情况:在DelphiXE2启动时界面显示加载了控件,并且控件的路径也放在了环境变量中,但打开程序报第三控件不存在. 问题原因:是没有选择要加载的控件. 问题处理:点击Component->Install Packages->Design packages中找到对应的控件包打上对号->点确定->重新运行DelphiXE2…
转载请说明出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/42264673 关于这个bug的修复我之前写过一篇博客,连接为:http://blog.csdn.net/zhuhongshu/article/details/40622705 本以为已经修复好,但是后来有网友私聊我,反映到还存在bug.原本已经解决的bug如下: 1.当List出现滚动条后,拖动滚动条,这时ListContainElementUI控件内部的子控件跟随Hea…
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41786407 duilib的CEditUI控件内部使用了win32的原生edit控件,最近在做的一个项目里需要增强CEditUI控件的一些功能,我就把改进的代码写到博客里.实际上改进代码很简单,不过也许能其他人会用到,就不用再费时了.  增加的功能如下:      1.增加提示文本,并且可以设置提示文本的颜色,当CEditUI初始化或者无文本的状态下,可以自动按照一定颜…
转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/41556615 在duilib中,按tab键会让焦点在Button一类的控件中切换,但是切换焦点一直存在bug,具体的描述如下: 1.在主窗体里弹出新的窗体,当新窗体中存在CEditUI控件并且焦点在此CEditUI控件上,那么按tab键将无法切换焦点而一直处于CEditUI中.(只在新窗体中有此bug,主创体中没有,原因会在后面分析) 2.CWebBrowserUI控件…
转载请说明出处,谢谢~~ 群里有朋友提到了使用Combo控件时,当下拉列表出现,此时鼠标滚轮滚动,下拉列表就自动消失了.我看了一下源码,这个bug的修复很简单. CComboUI控件被单击时创建CComboWnd窗体来模拟下拉菜单.CComboWnd类在HandleMessage函数里处理了鼠标滚动消息WM_MOUSEWHEEL,他把这个消息转发给CComboUI的DoEvent函数去处理,而CComboUI的DoEvent函数处理对应的UIEVENT_SCROLLWHEEL消息,又转而调用了S…
一 . 准备工作 创建一个基于对话框的MFC项目 删除对话框上的工具 二 . 实现将seven图片贴到上面,按一下则换一张图片 1.在资源视图中添加位图资源,通过属性修改图片ID 2.将对话框拉长,防止图片变形 3.在工具栏里添加pictrue Control,修改此工具的ID,Type,Image,!!!notify改为true 4.在Dlg头文件中添加成员变量 CStatic picture;   //  图片控件的对象 bool m_nChangeBmp;   //  切换位图 HBITM…
完整代码见:https://github.com/netease-im/NIM_Duilib_Framework/pull/151 核心代码(思路): appitem.h #pragma once #define APP_HEIGHT 90 #define APP_WIDTH 90 #define EACH_LINE 6 #include <string> //app的具体信息,这里假定有id,name,_icon,_isFrequent自行拓展 struct AppItem { std::s…
同一个控件,subscribeEvent与宏定义不能同时响应,优先响应sub 所以,同一个控件的同一个消息,要想在多个地方响应,就必须sub方式订阅…
转载请说明出处,谢谢~~ 这篇博客已经作废,只是留作记录,新的bug修复博客地址:http://blog.csdn.net/zhuhongshu/article/details/42264673 之前就在群里挺群友朋友说道,使用List控件,里面加入ListContainElementUI元素,当List出现横向滚动条时,滚动条滑动后元素不跟着滑动或者滑动后位置不正确. 关于List控件的扩展,很早就有人做过了: http://blog.csdn.net/xdrt81y/article/deta…
procedure MSGEnter(var msg:TMessage);message CM_MOUSEENTER;//响应进入的消息 procedure MSGLeave(var msg: TMessage);message CM_MOUSELEAVE;//响应离开的消息 procedure Button1Click(Sender: TObject); procedure tbStatusToolBarMouseMove(Sender: TObject; Shift: TShiftState…
MainActivity例如以下: package cc.cn; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; /** * Demo描写叙述: * Scroller使用演示样例--让控件平移划过屏幕 * * 參考资料: * http://b…
第一种,消息映射 第二种,重写OnCommand BOOL CmfcdlgDlg::OnCommand(WPARAM wParam, LPARAM lParam){ switch(wParam) { case IDC_BUTTON1: { MessageBox(_T("标题按钮")); } break; } return CDialogEx::OnCommand(wParam, lParam);}…
在空的Form里加个Button,写入void __fastcall TForm1::Button1Click(TObject *Sender){ for (long k=0; k<5; k++) { TLabel * label = new TLabel (Application); label->Left = 10; label->Top = k*30; label->Parent = this; label->Caption = "AAAA"; la…
转载:http://blog.csdn.net/rundll64/article/details/24823809?locationNum=6&fps=1 发现LabelUI的[属性列表.XML]里有valign属性,而代码里却找不到,是因为valign属性被合并到align属性里去了,只要设置align="center"就可以水平垂直都居中,但是想要垂直居中,水平左对齐啥的,就犯难了,因此这里需要将两个属性分开,valign管垂直,align管水平,这样想要怎么组合都OK啦.…
参考博客:Redrain 转载:http://blog.csdn.net/zhuhongshu/article/details/41786407 在Redrain博客的基础上做了修改 1.CEditUI的DoEvent函数添加一下代码 ///////////////////////// if( event.Type == UIEVENT_SETFOCUS && IsEnabled() ) { ) { SetText(GetText());//说明用户有输入,显示用户输入 } else {…
1. Progress Bar Control Messages    PBM_DELTAPOS    PBM_GETPOS    PBM_GETRANGE    PBM_SETBARCOLOR    PBM_SETBKCOLOR    PBM_SETPOS    PBM_SETRANGE    PBM_SETRANGE32    PBM_SETSTEP    PBM_STEPIT .h #ifndef REMOTECONTROL_H #define REMOTECONTROL_H #inclu…
  首先将本节要介绍的控件全部拖到界面上,并调整好位置,如图:           然后将Name属性改成其他名字,          不能是[控件名+UI+数字]这种,因为这是DuiDesigner默认的名字,它不会实际写入到XML,所以如果控件的名字被取成ActiveXUI1.ActiveXUI2.ButtonUI1这种格式的话,Name属性会被忽略,可以看到XML是没有Name属性的:     所以我们必须给它们指定其他的名字,这里格式统一为[控件名+Demo+数字],如图:      …
一.控件消息的响应. 在HelloDuilib例子中,程序不能退出,在这里,我将添加一个关闭按钮,当点击它时,调用PostQuitMessage进行退出. 首先在界面的右上角添加一个关闭按钮,并取名为“btnClose”. 然后在 CHelloDuilibWnd 中重载 WindowImplBase::Notify (); 代码如下: void CHelloDuilibWnd::Notify( TNotifyUI& msg ) { if (msg.sType == DUI_MSGTYPE_CLI…
首先将本节要介绍的控件全部拖到界面上,并调整好位置,如图:  然后将Name属性改成其他名字,         不能是[控件名+UI+数字]这种,因为这是DuiDesigner默认的名字,它不会实际写入到XML,所以如果控件的名字被取成ActiveXUI1.ActiveXUI2.ButtonUI1这种格式的话,Name属性会被忽略,可以看到XML是没有Name属性的:     所以我们必须给它们指定其他的名字,这里格式统一为[控件名+Demo+数字],如图:     XML如下(删除了暂时没用到…
上一节了解了大体流程,但是界面控件元素是如何被加载.解析.构建.管理.控件消息如何处理的呢?接下来我们将结合控件构造器进行分析: CDialogBuilder:控件构造器,主要用以解析xml配置文件并以此创建相应控件及相关属性. 类成员数据: m_xml:xml解析器,用以读取并解析xml配置文件: m_pCallback:构造器回调函数,用以给予用户可以实现自定义的构造控件对象的方式: m_pstrtype:以NULL为结束符的字符串,资源类型,参数含义同EnumResLangProc函数中的…
    在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如菜单控件).虽然duilib没有提供这些控件,但是自己绘制起来也是非常方便的,不过duilib的自绘可比MFC方便得不止一点点了,其实duilib的自绘大都不用自己绘制,就是一些控件和图片的组合而已,相当简单方便~~~       一.菜单控件     其实菜单控件的外观和ListBox非常像,所以…
到上一个教程为止,界面显示的代码就都介绍完啦,现在开始介绍控件的响应,其实在<2013 duilib入门简明教程 -- 事件处理和消息响应 (17)>里已经列出了duilib自己定义的所有消息,并且前面也介绍了Button和Tab的响应,还是有小伙伴们不知道怎么响应其他控件,因此这里介绍一下其他控件的响应. 需要注意的是,如果要响应控件,则必须给控件指定一个唯一的ID,在windows编程里,每个控件的ID都是一个数字,如IDC_BUTTON_ 等等,可以用GetDlgItem()来获取控件的…
上一篇讲了窗口及消息,了解了大体的程序框架.这一篇说的是控件的创建. duilib支持XML配置文件,即根据XML创建窗口及控件,将界面与逻辑分开,便于修改及维护.上一篇的示例中可以看到在消息WM_CREATE中有控件创建的相关代码. if( uMsg == WM_CREATE ) { m_pm.Init(m_hWnd); //根据XML创建控件 CDialogBuilder builder; CControlUI* pRoot = builder.Create(_T(, NULL, &m_pm…
在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如菜单控件).虽然duilib没有提供这些控件,但是自己绘制起来也是非常方便的,不过duilib的自绘可比MFC方便得不止一点点了,其实duilib的自绘大都不用自己绘制,就是一些控件和图片的组合而已,相当简单方便~~~    一.菜单控件    其实菜单控件的外观和ListBox非常像,所以我们可以用教程1…
    前面的教程应该让大家对duilib的整体有所映像了,下面就来介绍下duilib具体控件的使用.     由于官方没有提供默认的控件样式,所以我就尽量使用win7或者XP自带的按钮样式了,虽然界面比较土鳖,但是想要换成百度杀毒那样的界面,只需要更换图片即可,如果有哪位小伙伴能够提供一些控件样式,那就再好不过啦~     首先利用一下前面教程的框架,效果图如下:   main.cpp的代码如下: class CDuiFrameWnd : public WindowImplBase { pub…
转载请说明原出处,谢谢~~ Duilib给控件贴图功能可以附带多个属性,各个属性的配合可以达到许多效果.以下是duilib支持的所有贴图属性: 贴图描述: Duilib的表现力丰富很大程度上得益于贴图描述的简单强大.Duilib的贴图描述分为简单模式和复杂模式两种. 简单模式使用文件名做为贴图描述内容,在这种方式下,此图片将会以拉伸方式铺满控件. 复杂模式使用带属性的字符串表示贴图方式,既支持从文件中加载图片,也可以从资源中加载,具体如下: 如果是从文件加载,设置file属性,如file='XX…
控件子类化 如果想要在默认的控件类中添加一些功能,就需要子类化一个控件类 在类内可以响应控件所有的消息,并且可以添加自己的函数和数据 通过类向导子类化控件的步骤 打开类向导,创建一个 MFC 类,不要选错项目   创建继承自对应类的子类 可以在子类中添加新功能,想要应用必须要绑定到控件 设置好需要包头文件. 消息映射和消息反射 消息映射指的是,通过消息映射宏获取消息并进行对应的处理 处理按键消息:按键获取消息->打包成COMMAND发送给父类->父类处理消息 消息反射指的是,父类在处理控件消息…
前面的教程应该让大家对duilib的整体有所映像了,下面就来介绍下duilib具体控件的使用.    由于官方没有提供默认的控件样式,所以我就尽量使用win7或者XP自带的按钮样式了,虽然界面比较土鳖,但是想要换成百度杀毒那样的界面,只需要更换图片即可,如果有哪位小伙伴能够提供一些控件样式,那就再好不过啦~    首先利用一下前面教程的框架,效果图如下: main.cpp的代码如下: class CDuiFrameWnd : public WindowImplBase { public: vir…
摘要:目前MFC和ATL代表了两种框架,分别面向不同类型的基于Windows的开发.MFC代表了创建独立的Windows应用的一种简单.一致的方法:ATL提供了一种框架来实现创建COM客户机和服务器所必须的样板文件代码.这两种框架在它们对于开发ActiveX的用途上会合了.我们将看看这两种框架是如何适用于创建ActiveX控件的——突出其优缺点,亲自经历创建一个控件的过程——以便你能够决定何时使用一种框架,何时使用另一种. 如果你希望用C++来写ActiveX®控件,有两个流行的框架,一个是Mi…