duilib-封装win32控件
来源:互联网 发布:点评管家淘宝店铺 编辑:程序博客网 时间:2024/05/06 17:09
封装win32控件在duilib中使用,我这里因为项目中用到了时间控件,duilib中没有,但是win32中有DateTimePicker控件。
思路:就是创建一个duilib控件来容纳win32控件。
1.和网上的资料一样,我们创建一个duilib控件
#pragma once#include "resource.h"#include "stdafx.h"class CWndUI : public CControlUI{public: CWndUI(void){ m_hWnd = NULL; }; ~CWndUI(void){}; virtual void SetInternVisible(bool bVisible = true) { __super::SetInternVisible(bVisible); ::ShowWindow(m_hWnd, bVisible); } virtual void SetPos(RECT rc) { __super::SetPos(rc); ::SetWindowPos(m_hWnd, NULL, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, SWP_NOZORDER | SWP_NOACTIVATE); } BOOL Attach(HWND hWndNew) { if (!::IsWindow(hWndNew)) { return FALSE; } m_hWnd = hWndNew; return TRUE; } HWND Detach() { HWND hWnd = m_hWnd; m_hWnd = NULL; return hWnd; }protected: HWND m_hWnd;};
这里能得到控件的句柄。
2.像自定义控件一样,我们在窗口类中需要继承重写CreateControl(LPCTSTR pstrClass);函数
CControlUI* CClockDlg::CreateControl(LPCTSTR pstrClass){ if (_tcsicmp(pstrClass, _T("Wnd")) == 0) { CWndUI *pUI = new CWndUI(); m_TimeHwnd = CreateWindow(_T("SysDateTimePick32"), _T(""), WS_VISIBLE | WS_CHILD | DTS_TIMEFORMAT, 265, 90, 120, 28, m_pm.GetPaintWindow(), NULL, NULL, NULL); pUI->Attach(m_TimeHwnd); } return NULL;}
xml:
<Wnd />
m_TimeHwnd是我写的类中的变量,因为我要得到时间控件的句柄。win32中日期时间的控件类型是SysDateTimePick32,这个一定要弄清楚,不然无法显示控件。另外是这个控件默认是显示日期的,我们需要显示时间,这里我们CreateWindow的时候就要添加DTS_TIMEFORMAT属性。还有一个是网上使用MFC控件在xml中留下位置和大小信息,我发现在win32中没有用,所以设置位置和大小我就写在了CreateWindow里。(真坑爹)
经过上两步应该win32的时间控件就能显示了
3.就是要得到我们的时间了
SYSTEMTIME sysTime; ::SendMessage(m_TimeHwnd, MCM_GETCURSEL, NULL, (LPARAM)&sysTime); CDuiString str; str.Format(L"%d小时%d分钟%d秒", sysTime.wHour, sysTime.wMinute, sysTime.wSecond); MessageBox(NULL, str, L"sss", NULL);
说明:需要说明一点是我这里窗口类是继承的public WindowImplBase,如果是继承public CWindowWnd, public INotifyUI,显示不出来,就需要在Create函数里添加上自身的this指针。
有什么问题给我留言或者联系我:809505138.
阅读全文
0 0
- duilib-封装win32控件
- 将webkit内核封装为duilib的浏览器控件
- 将webkit内核封装为duilib的浏览器控件
- 将webkit内核封装为duilib的浏览器控件
- duilib 封装VCL
- 基于Win32 SDK的树状控件属性表的封装
- 将VLC库封装为duilib的万能视频播放控件
- 分享修改Wke源代码后重新封装成Duilib控件的代码
- duilib中将xml封装为控件简单示例(简单自定义控件,封装几个基本控件合为1个自定义控件)
- Duilib中的控件消息
- duilib list控件扩展
- duilib CTileLayoutUI 控件
- DuiLib实现自定义控件
- duilib list控件扩展
- duilib 控件属性列表
- duilib CTileLayoutUI 控件
- Duilib 控件属性大全
- Duilib 创建自定义控件
- Java应用OpenCV指南其三:OpenCV中的图像操作
- AI 投资人Lan Xuezhao的投资逻辑:我关注进入市场的方式、公司的定位和规模
- 清华大学朱军详解珠算:贝叶斯深度学习的GPU库(附视频)
- 在 AI 创业的好时代,初敏结束 8 年阿里生涯加入思必驰
- 伯克利教授Stuart Russell:人工智能的过去、现在和未来
- duilib-封装win32控件
- 如果你变成一个程序员……
- CV 界学术明星肖建雄创业了,他想让自动驾驶像电脑一样普及 | 专访
- 推想科技完成 1.2 亿元 B 轮融资,创医学影像人工智能行业单笔最大融资额
- OSGi规范与原理(1)
- 购物车(死数据)(安卓)
- 重写微软「代码」的那个人,叫纳德拉
- Erlang匿名函数及函数的高阶应用
- Xftp工具连接到远程linux主机上传下载