Duilib学习(一)

#pragmaonce#includeusingnamespaceDuiLib;#ifdef_DEBUG#ifdef_UNICODE#pragmacomment(lib,&

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

Duilib学习(一)此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

#pragma once #include <UIlib.h> using namespace DuiLib; #ifdef _DEBUG # ifdef _UNICODE # pragma comment(lib, "DuiLib_ud.lib") # else # pragma comment(lib, "DuiLib_d.lib") # endif #else # ifdef _UNICODE # pragma comment(lib, "DuiLib_u.lib") # else # pragma comment(lib, "DuiLib.lib") # endif #endif class CDuiFrameWnd : public CWindowWnd, public INotifyUI { public: virtual LPCTSTR GetWindowClassName() const { return _T("DUIMainFrame"); } virtual void Notify(TNotifyUI& msg) { if (msg.sType == _T("click")) { if (msg.pSender->GetName() == _T("btnHello")) { ::MessageBox(NULL, _T("我是按钮"), _T("点击了按钮"), NULL); } } } virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; if (uMsg == WM_CREATE) { // 方法1 //CControlUI *pWnd = new CButtonUI; //pWnd->SetName(_T("btnHello")); // 控件的唯一标识 //pWnd->SetText(_T("Hello World")); // 设置文字 //pWnd->SetBkColor(0xFF00FF00); // 设置背景色 //m_PaintManager.Init(m_hWnd); //m_PaintManager.AttachDialog(pWnd); //m_PaintManager.AddNotifier(this); // 添加控件响应消息,这样消息就会达到duilib的消息循环 // 方法2  m_PaintManager.Init(m_hWnd); CDialogBuilder builder; CControlUI *pRoot = builder.Create(_T("duilib.xml"), NULL, NULL, &m_PaintManager, NULL); ASSERT(pRoot && "Failed to parse XML"); m_PaintManager.AttachDialog(pRoot); m_PaintManager.AddNotifier(this); return lRes; } // 以下三个消息用于屏蔽系统标题栏 // WM_NCACTIVETE WM_NCCALCSIZE WM_NCPAINT else if (uMsg == WM_NCACTIVATE) { if (!::IsIconic(m_hWnd)) { return (wParam == 0) ? TRUE : FALSE; } } else if (uMsg == WM_NCCALCSIZE) { return 0; } else if (uMsg == WM_NCPAINT) { return 0; } if (m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes)) { return lRes; } return __super::HandleMessage(uMsg, wParam, lParam); } protected: CPaintManagerUI m_PaintManager; }; class CDuiXmlFrameWnd : public WindowImplBase { public: // 实现以下三个纯虚函数 virtual LPCTSTR GetWindowClassName()const { return _T("DUIMainFrame"); } virtual CDuiString GetSkinFile(){ return _T("duilib.xml"); } virtual CDuiString GetSkinFolder(){ return _T(""); } // 将事件添加到消息队列 virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; if (uMsg == WM_CREATE) { // 方法1 //CControlUI *pWnd = new CButtonUI; //pWnd->SetName(_T("btnHello")); // 控件的唯一标识 //pWnd->SetText(_T("Hello World")); // 设置文字 //pWnd->SetBkColor(0xFF00FF00); // 设置背景色 //m_PaintManager.Init(m_hWnd); //m_PaintManager.AttachDialog(pWnd); //m_PaintManager.AddNotifier(this); // 添加控件响应消息,这样消息就会达到duilib的消息循环 // 方法2  m_PaintManager.Init(m_hWnd); CDialogBuilder builder; CControlUI *pRoot = builder.Create(_T("duilib.xml"), NULL, NULL, &m_PaintManager, NULL); ASSERT(pRoot && "Failed to parse XML"); m_PaintManager.AttachDialog(pRoot); m_PaintManager.AddNotifier(this); return lRes; } // 以下三个消息用于屏蔽系统标题栏 // WM_NCACTIVETE WM_NCCALCSIZE WM_NCPAINT else if (uMsg == WM_NCACTIVATE) { if (!::IsIconic(m_hWnd)) { return (wParam == 0) ? TRUE : FALSE; } } else if (uMsg == WM_NCCALCSIZE) { return 0; } else if (uMsg == WM_NCPAINT) { return 0; } if (m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes)) { return lRes; } return __super::HandleMessage(uMsg, wParam, lParam); } // 实现控件响应事件 virtual void Notify(TNotifyUI& msg) { if (msg.pSender->GetName() == _T("editHello")) { // 获取控件对象方法 CEditUI *pEdit = static_cast<CEditUI *>(m_PaintManager.FindControl(_T("editHello"))); } // 处理控件响应事件 if (msg.sType == _T("click")) { if (msg.pSender->GetName() == _T("btnHello")) { ::MessageBox(NULL, _T("我是按钮"), _T("点击了按钮"), NULL); // 人为修改控件焦点 CEditUI *pEdit2 = static_cast<CEditUI *>(m_PaintManager.FindControl(_T("editWorld"))); m_PaintManager.SetFocus(pEdit2, TRUE); } } } }; int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // 实例句柄与渲染类关联  CPaintManagerUI::SetInstance(hInstance); // 设置资源的默认路径(设置和exe在同一个目录)  CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath()); /*CDuiFrameWnd duiFrame; duiFrame.Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE); duiFrame.CenterWindow(); duiFrame.ShowModal();*/ // 方法2  CDuiXmlFrameWnd duixmlFrame; duixmlFrame.Create(NULL, _T("DuiWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE); duixmlFrame.CenterWindow(); duixmlFrame.ShowModal(); return 0; }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120245.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • html中设置背景图片为平铺,html背景图片怎么设置平铺方式

    html中设置背景图片为平铺,html背景图片怎么设置平铺方式在html中,可利用background-repeat属性来设置背景图片的平铺方式;当属性值设置为“repeat”时可向垂直和水平方向平铺,“repeat-x”时可水平平铺,“repeat-y”时可垂直平铺,“no-repeat”时不平铺。本教程操作环境:windows7系统、CSS3&&HTML5版、DellG3电脑。html背景图片设置平铺方式div{border:1px…

  • python+opencv的图像学基础以及简单的人脸识别

    python+opencv的图像学基础以及简单的人脸识别

  • 阿里云上实现DDNS公网解析「建议收藏」

    阿里云上实现DDNS公网解析「建议收藏」目录阿里云官网购买域名服务器pip安装阿里云python-ddns库获取AccessKey复制DDNS代码创建定时任务验证DDNS是否成功阿里云官网购买域名注册阿里云账号,登录,进入控制台,点击域名进行购买,购买时会提示你登记身份信息。我的5年129元,不贵吧。不要买.com,.cn等等重要域名,因为非常贵。服务器pip安装阿里云python-ddns库因为有的人机器上同时有python2和python3,如果用pip安装就不起作用,所以以下六条命令都要执行一下,以防万一。pipins

  • cad怎样生成轮廓线(图样中可见轮廓线用什么线)

    一般在做影像处理时,为提升效率,常会将影像转为二值影像后再进行处理。在EmguCV内有许多找轮廓线的方法,但是随着版本更新,不同版本的函数不见得会一样,每次都要重新查询实在很麻烦,那不如把他们记下来。版本概要:EmguCV版本:3.2.0.2682编译器版本:VisualStudio2017Community方案平台:x64(许多导致程式无法执行的原因是因为没有改执

  • pycharm的调试功能_pycharm运行调试配置

    pycharm的调试功能_pycharm运行调试配置Debug调试,是对于学习编程人员来说是一项重要的技能。只有当你学会debug了以后,才可以正确的知道程序的走向流程是如何的,DEBUG是排除程序故障的意思。debug则是通过工具来对代码进行调试,进而一步步找出程序中出现bug的位置,也就是程序中具体错误代码的位置。Pycharm中的debug模式首先,还是用示例说话,我们先写一段简短的代码,来帮助我们完成今天要讲的内容。初学者可能没见过for循环中的下划线‘_’,在Python中是占位符的意思,因…

  • RGBD深度相机_rgbd相机是什么

    RGBD深度相机_rgbd相机是什么深度相机与RGBD相机的区别?为何经常概念混淆?什么是深度图? 什么是深度/RGB-D相机(有什么关系?)? RGB-D相机原理简介结构光 飞行时间RGB-D相机有哪些坑? RGB-D相机优点 RGB-D相机应用深度图一般是16位的单目结构光?双目结构光?单目结构光有一个红外发射器和一个红外接收器双目结构光有一个红外发射器和两个红外接收器…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号